diff options
author | davidcunado-arm <david.cunado@arm.com> | 2017-09-11 11:21:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-11 11:21:08 +0100 |
commit | 8121bc0f9f9620c6defae2e567b91b349960cfa6 (patch) | |
tree | bdaeb1dc67953375ab43f6ab7f1185b1a583ee8d | |
parent | ff07ca2097dad0a70dc546206f8411426683e28f (diff) | |
parent | 88ad1461041b330b24f3cd4700c0e95a118f45aa (diff) |
Merge pull request #1084 from davidcunado-arm/dc/warmboot_a32
Set NS version SCTLR during warmboot path
-rw-r--r-- | bl32/sp_min/sp_min_main.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/bl32/sp_min/sp_min_main.c b/bl32/sp_min/sp_min_main.c index 06b0f333..4e8e685e 100644 --- a/bl32/sp_min/sp_min_main.c +++ b/bl32/sp_min/sp_min_main.c @@ -196,6 +196,8 @@ void sp_min_main(void) void sp_min_warm_boot(void) { smc_ctx_t *next_smc_ctx; + cpu_context_t *ctx = cm_get_context(NON_SECURE); + u_register_t ns_sctlr; psci_warmboot_entrypoint(); @@ -206,6 +208,16 @@ void sp_min_warm_boot(void) copy_cpu_ctx_to_smc_stx(get_regs_ctx(cm_get_context(NON_SECURE)), next_smc_ctx); + + /* Temporarily set the NS bit to access NS SCTLR */ + write_scr(read_scr() | SCR_NS_BIT); + isb(); + ns_sctlr = read_ctx_reg(get_regs_ctx(ctx), CTX_NS_SCTLR); + write_sctlr(ns_sctlr); + isb(); + + write_scr(read_scr() & ~SCR_NS_BIT); + isb(); } #if SP_MIN_WITH_SECURE_FIQ |