summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAchin Gupta <achin.gupta@arm.com>2014-06-26 09:58:52 +0100
committerAchin Gupta <achin.gupta@arm.com>2014-07-19 23:31:53 +0100
commitb51da821821cfda0d44f09a6f92fdc5933f9b23b (patch)
tree01d72a57badfa7cc19c5530d64f4c308b6d37799 /include
parentafff8cbdd816ca9b0d71ab54882ce70b21ed84e1 (diff)
Remove coherent stack usage from the warm boot path
This patch uses stacks allocated in normal memory to enable the MMU early in the warm boot path thus removing the dependency on stacks allocated in coherent memory. Necessary cache and stack maintenance is performed when a cpu is being powered down and up. This avoids any coherency issues that can arise from reading speculatively fetched stale stack memory from another CPUs cache. These changes affect the warm boot path in both BL3-1 and BL3-2. The EL3 system registers responsible for preserving the MMU state are not saved and restored any longer. Static values are used to program these system registers when a cpu is powered on or resumed from suspend. Change-Id: I8357e2eb5eb6c5f448492c5094b82b8927603784
Diffstat (limited to 'include')
-rw-r--r--include/bl31/context.h16
1 files changed, 4 insertions, 12 deletions
diff --git a/include/bl31/context.h b/include/bl31/context.h
index 82d0c9c..3bf4980 100644
--- a/include/bl31/context.h
+++ b/include/bl31/context.h
@@ -76,21 +76,13 @@
* 32-bits wide but are stored as 64-bit values for convenience
******************************************************************************/
#define CTX_EL3STATE_OFFSET (CTX_GPREGS_OFFSET + CTX_GPREGS_END)
-#define CTX_VBAR_EL3 0x0 /* Currently unused */
+#define CTX_SCR_EL3 0x0
#define CTX_RUNTIME_SP 0x8
#define CTX_SPSR_EL3 0x10
#define CTX_ELR_EL3 0x18
-#define CTX_SCR_EL3 0x20
-#define CTX_SCTLR_EL3 0x28
-#define CTX_CPTR_EL3 0x30
-/* Unused space to allow registers to be stored as pairs */
-#define CTX_CNTFRQ_EL0 0x40
-#define CTX_MAIR_EL3 0x48
-#define CTX_TCR_EL3 0x50
-#define CTX_TTBR0_EL3 0x58
-#define CTX_DAIF_EL3 0x60
-/* Unused space to honour alignment requirements */
-#define CTX_EL3STATE_END 0x70
+#define CTX_CPTR_EL3 0x20
+#define CTX_CNTFRQ_EL0 0x28
+#define CTX_EL3STATE_END 0x30
/*******************************************************************************
* Constants that allow assembler code to access members of and the