diff options
author | Colin Cross <ccross@android.com> | 2011-08-23 17:43:54 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:37:12 -0800 |
commit | ed2d4e788a7f6d8719cf04be1b5259d47492d9a4 (patch) | |
tree | 352acad3e76bbf20aa90e31c42b8f774feb6eac2 /arch/arm/mach-tegra/sleep.S | |
parent | 02cbbd37ebaa26c821f43eb3faeec0800139bba9 (diff) |
ARM: tegra: sleep: flush tlbs when exiting wfi
tegra_sleep_wfi disables coherency to prepare for possibly
resetting the cpu. If an interrupt is received, it exits
wfi and re-enables coherency, but it was not flushing the
tlbs or the branch predictor array, which could have been
updated by broadcast tlb operations that were ignored.
Flush the tlbs and branch predictor array when exiting.
Change-Id: If2c6ca3f923baf2f883f461a2a90f08833c7e191
Signed-off-by: Colin Cross <ccross@android.com>
Diffstat (limited to 'arch/arm/mach-tegra/sleep.S')
-rw-r--r-- | arch/arm/mach-tegra/sleep.S | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/sleep.S b/arch/arm/mach-tegra/sleep.S index 0c74e4ecd774..80aaca31fe52 100644 --- a/arch/arm/mach-tegra/sleep.S +++ b/arch/arm/mach-tegra/sleep.S @@ -316,6 +316,9 @@ ENTRY(tegra_sleep_wfi) mcr p15, 0, r11, c1, c0, 1 @ reenable coherency @ the cpu was running with coherency disabled, caches may be out of date + mov r0, #0 + mcr p15, 0, r0, c8, c3, 0 @ invalidate TLB + mcr p15, 0, r0, c7, c5, 6 @ flush BTAC #ifdef MULTI_CACHE ldr r10, =cpu_cache mov lr, pc |