From ce971c2367ed57d947f73347f6f9ab3263aec4b9 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 10 Jun 2010 14:19:43 +0200 Subject: [PATCH] arm: use processor specififc functions to turn off MMU The way it was done before does not work on Cortex processors. Signed-off-by: Sascha Hauer Tested-by: Orjan Friberg Tested-by: Luca Ceresoli --- arch/arm/cpu/cpu.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/arch/arm/cpu/cpu.c b/arch/arm/cpu/cpu.c index fbc91aabf..2b36a793d 100644 --- a/arch/arm/cpu/cpu.c +++ b/arch/arm/cpu/cpu.c @@ -75,12 +75,19 @@ void arch_shutdown(void) int i; #ifdef CONFIG_MMU + /* nearly the same as below, but this could also disable + * second level cache. + */ mmu_disable(); +#else + asm volatile ( + "bl __mmu_cache_flush;" + "bl __mmu_cache_off;" + : + : + : "r0", "r1", "r2", "r3", "r6", "r10", "r12", "cc", "memory" + ); #endif - - /* flush I/D-cache */ - i = 0; - asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (i)); } /**