summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2010-04-09 17:15:09 -0700
committerGary King <gking@nvidia.com>2010-04-11 10:29:41 -0700
commita523de81339090270a2fbbede04904d77989d690 (patch)
treef288aa55339f1eb7c6aa110d2ce2e737f9199df5
parente95fb51bc9488d618218b75d127628ba0ab14b86 (diff)
tegra: invalidate CPU state when starting secondary processor
tegra_secondary_startup was not invalidating the entire CPU state when bringing up a slave CPU. This change adds invalidation of the I-cache, TLB, and BTAC, and also enables the I-cache and branch prediction to speed up D-cache invalidation. Change-Id: I82b21dde7befb5ae634a72418b06892a30ec1ebf Reviewed-on: http://git-master/r/1069 Reviewed-by: Scott Williams <scwilliams@nvidia.com> Tested-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com> Tested-by: Gary King <gking@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/headsmp.S11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/headsmp.S b/arch/arm/mach-tegra/headsmp.S
index ee6a0976d1ca..dadad41a2008 100644
--- a/arch/arm/mach-tegra/headsmp.S
+++ b/arch/arm/mach-tegra/headsmp.S
@@ -70,8 +70,17 @@ ENDPROC(v7_invalidate_l1)
ENTRY(tegra_secondary_startup)
msr cpsr_fsxc, #0xd3
+ mov r0, #0
+ mcr p15, 0, r0, c7, c5, 0 @ invalidate i-cache
+ mcr p15, 0, r0, c7, c5, 6 @ flusth btac
+ mcr p15, 0, r0, c8, c7, 0 @ invalidate unified TLBs
+ mcr p15, 0, r0, c7, c10, 4 @ dsb
+ mcr p15, 0, r0, c7, c5, 4 @ isb
+ mrc p15, 0, r0, c1, c0, 0 @ sctlr
+ orr r0, r0, #0x1800 @ sctlr.i | sctlr.z
+ mcr p15, 0, r0, c1, c0, 0 @ sctlr
bl v7_invalidate_l1
- mrc p15, 0, r0, c0, c0, 5
+ mrc p15, 0, r0, c0, c0, 5 @ mpidr
and r0, r0, #15
#if defined(CONFIG_ARCH_TEGRA_2x_SOC)
ldr r1, =0x6000f100