ARM: 9057/1: cache-v7: add missing ISB after cache level selection
authorArd Biesheuvel <ardb@kernel.org>
Thu, 11 Feb 2021 08:19:46 +0000 (09:19 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Tue, 9 Mar 2021 10:25:17 +0000 (10:25 +0000)
A write to CSSELR needs to complete before its results can be observed
via CCSIDR. So add a ISB to ensure that this is the case.

Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/mm/cache-v7.S

index dc8f152..307f381 100644 (file)
@@ -38,9 +38,10 @@ icache_size:
  * procedures.
  */
 ENTRY(v7_invalidate_l1)
-       mov     r0, #0
-       mcr     p15, 2, r0, c0, c0, 0
-       mrc     p15, 1, r0, c0, c0, 0
+       mov     r0, #0
+       mcr     p15, 2, r0, c0, c0, 0   @ select L1 data cache in CSSELR
+       isb
+       mrc     p15, 1, r0, c0, c0, 0   @ read cache geometry from CCSIDR
 
        movw    r1, #0x7fff
        and     r2, r1, r0, lsr #13