diff options
-rw-r--r-- | arch/arm/kernel/setup.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 9fc483393bae..e0430d036cea 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -246,11 +246,12 @@ static int cpu_has_aliasing_icache(unsigned int arch) | |||
246 | /* arch specifies the register format */ | 246 | /* arch specifies the register format */ |
247 | switch (arch) { | 247 | switch (arch) { |
248 | case CPU_ARCH_ARMv7: | 248 | case CPU_ARCH_ARMv7: |
249 | asm("mcr p15, 2, %1, c0, c0, 0 @ set CSSELR\n" | 249 | asm("mcr p15, 2, %0, c0, c0, 0 @ set CSSELR" |
250 | "isb\n" | 250 | : /* No output operands */ |
251 | "mrc p15, 1, %0, c0, c0, 0 @ read CCSIDR" | ||
252 | : "=r" (id_reg) | ||
253 | : "r" (1)); | 251 | : "r" (1)); |
252 | isb(); | ||
253 | asm("mrc p15, 1, %0, c0, c0, 0 @ read CCSIDR" | ||
254 | : "=r" (id_reg)); | ||
254 | line_size = 4 << ((id_reg & 0x7) + 2); | 255 | line_size = 4 << ((id_reg & 0x7) + 2); |
255 | num_sets = ((id_reg >> 13) & 0x7fff) + 1; | 256 | num_sets = ((id_reg >> 13) & 0x7fff) + 1; |
256 | aliasing_icache = (line_size * num_sets) > PAGE_SIZE; | 257 | aliasing_icache = (line_size * num_sets) > PAGE_SIZE; |