summaryrefslogtreecommitdiff
path: root/common/psci/psci_entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'common/psci/psci_entry.S')
-rw-r--r--common/psci/psci_entry.S9
1 files changed, 6 insertions, 3 deletions
diff --git a/common/psci/psci_entry.S b/common/psci/psci_entry.S
index 2f39f360..74cdf956 100644
--- a/common/psci/psci_entry.S
+++ b/common/psci/psci_entry.S
@@ -32,6 +32,7 @@
#include <platform.h>
#include <psci.h>
#include <psci_private.h>
+#include <runtime_svc.h>
#include <asm_macros.S>
.globl psci_aff_on_finish_entry
@@ -77,7 +78,6 @@ psci_aff_common_finish_entry:
mov x0, x19
mov x1, #MPIDR_AFFLVL0
blr x22
- mov x21, x0
/* --------------------------------------------
* Give ourselves a stack allocated in Normal
@@ -88,10 +88,13 @@ psci_aff_common_finish_entry:
bl platform_set_stack
/* --------------------------------------------
- * Restore the context id. value
+ * Use the size of the general purpose register
+ * context to restore the register state
+ * stashed by earlier code
* --------------------------------------------
*/
- mov x0, x21
+ sub sp, sp, #SIZEOF_GPREGS
+ exception_exit restore_regs
/* --------------------------------------------
* Jump back to the non-secure world assuming