summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/armv7-a/arm_pghead.S
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-12-18 09:01:43 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-12-18 09:01:43 -0600
commit335c06f67d51c670c8244a82f13363161ee13e7d (patch)
treeb8f791265602721b5f6dccba3620b5d3a53cd736 /nuttx/arch/arm/src/armv7-a/arm_pghead.S
parentaecb26ec375c973784961bbf4416d2b068a4d06c (diff)
downloadnuttx-335c06f67d51c670c8244a82f13363161ee13e7d.tar.gz
nuttx-335c06f67d51c670c8244a82f13363161ee13e7d.tar.bz2
nuttx-335c06f67d51c670c8244a82f13363161ee13e7d.zip
Cortex-A: Fix start-up cache invalidation logi
Diffstat (limited to 'nuttx/arch/arm/src/armv7-a/arm_pghead.S')
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_pghead.S22
1 files changed, 15 insertions, 7 deletions
diff --git a/nuttx/arch/arm/src/armv7-a/arm_pghead.S b/nuttx/arch/arm/src/armv7-a/arm_pghead.S
index fcf449e9b..a11570515 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_pghead.S
+++ b/nuttx/arch/arm/src/armv7-a/arm_pghead.S
@@ -343,8 +343,11 @@ __start:
*/
mov r0, #0
- mcr CP15_ICIALLUIS(r0) /* Invalidate entire instruction cache Inner Shareable */
- mcr CP15_TLBIALLIS(r0) /* Invalidate entire Unified TLB Inner Shareable */
+ mcr CP15_TLBIALL(r0,c7) /* Invalidate the entire unified TLB */
+ mcr CP15_TLBIALL(r0,c6)
+ mcr CP15_TLBIALL(r0,c5)
+ mcr CP15_BPIALL(r0) /* Invalidate entire branch prediction array */
+ mcr CP15_ICIALLU(r0) /* Invalidate I-cache */
/* Load the page table address.
*
@@ -360,8 +363,9 @@ __start:
* r4 = Address of the base of the L1 table
*/
- mcr CP15_TTBR0(r4)
- mcr CP15_TTBR1(r4)
+ orr r1, r4, #0x48
+ mcr CP15_TTBR0(r1)
+ mcr CP15_TTBR1(r1)
/* Set the TTB control register (TTBCR) to indicate that we are using
* TTBR0. r0 still holds the value of zero.
@@ -421,8 +425,11 @@ __start:
* SCTLR_Z Bit 11: Program flow prediction control always enabled on A5
*/
- orr r0, r0, #(SCTLR_M /* | SCTLR_Z */)
-
+ orr r0, r0, #(SCTLR_M)
+#ifndef CONFIG_ARCH_CORTEXA5
+ orr r0, r0, #(SCTLR_Z)
+#endif
+
/* Position vectors to 0xffff0000 if so configured.
*
* SCTLR_V Bit 13: High vectors
@@ -438,7 +445,8 @@ __start:
* replacement strategy.
*/
-#ifndef CPU_CACHE_ROUND_ROBIN
+#if defined(CPU_CACHE_ROUND_ROBIN) && !defined(CONFIG_ARCH_CORTEXA5)
+ orr r0, r0, #(SCTLR_RR)
#endif
/* Dcache enable