diff options
author | Will Deacon <will.deacon@arm.com> | 2011-11-22 12:30:28 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2011-12-08 05:30:38 -0500 |
commit | d675d0bc47f28c5414fbbe17fcc801f69c45b960 (patch) | |
tree | 78d7b2c43650d6af96caac9e631409cf15c8f25a /arch/arm/boot/compressed/head.S | |
parent | 8d2cd3a38fd663bd341507f5ac29002ffd81d986 (diff) |
ARM: LPAE: add ISBs around MMU enabling code
Before we enable the MMU, we must ensure that the TTBR registers contain
sane values. After the MMU has been enabled, we jump to the *virtual*
address of the following function, so we also need to ensure that the
SCTLR write has taken effect.
This patch adds ISB instructions around the SCTLR write to ensure the
visibility of the above.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index c2effc917254..c5d60250d43d 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -659,6 +659,7 @@ __armv7_mmu_cache_on: | |||
659 | mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer | 659 | mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer |
660 | mcrne p15, 0, r1, c3, c0, 0 @ load domain access control | 660 | mcrne p15, 0, r1, c3, c0, 0 @ load domain access control |
661 | #endif | 661 | #endif |
662 | mcr p15, 0, r0, c7, c5, 4 @ ISB | ||
662 | mcr p15, 0, r0, c1, c0, 0 @ load control register | 663 | mcr p15, 0, r0, c1, c0, 0 @ load control register |
663 | mrc p15, 0, r0, c1, c0, 0 @ and read it back | 664 | mrc p15, 0, r0, c1, c0, 0 @ and read it back |
664 | mov r0, #0 | 665 | mov r0, #0 |