ARC: mm: move MMU specific bits out of entry code ...
authorVineet Gupta <vgupta@kernel.org>
Mon, 16 Sep 2019 17:54:34 +0000 (10:54 -0700)
committerVineet Gupta <vgupta@kernel.org>
Tue, 24 Aug 2021 21:25:48 +0000 (14:25 -0700)
... to avoid polluting shared entry code (across three ISA variants)
with ISA/MMU specific code.

Cc: Jose Abreu <joabreu@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@kernel.org>
arch/arc/include/asm/mmu.h
arch/arc/kernel/entry-arcv2.S
arch/arc/kernel/entry.S

index c8b4901..e66e1e4 100644 (file)
@@ -84,6 +84,14 @@ static inline int is_pae40_enabled(void)
 
 extern int pae40_exist_but_not_enab(void);
 
 
 extern int pae40_exist_but_not_enab(void);
 
+#else
+
+.macro ARC_MMU_REENABLE reg
+       lr \reg, [ARC_REG_PID]
+       or \reg, \reg, MMU_ENABLE
+       sr \reg, [ARC_REG_PID]
+.endm
+
 #endif /* !__ASSEMBLY__ */
 
 #endif
 #endif /* !__ASSEMBLY__ */
 
 #endif
index 12d5f12..a7e6a21 100644 (file)
@@ -10,6 +10,7 @@
 #include <asm/errno.h>
 #include <asm/arcregs.h>
 #include <asm/irqflags.h>
 #include <asm/errno.h>
 #include <asm/arcregs.h>
 #include <asm/irqflags.h>
+#include <asm/mmu.h>
 
 ; A maximum number of supported interrupts in the core interrupt controller.
 ; This number is not equal to the maximum interrupt number (256) because
 
 ; A maximum number of supported interrupts in the core interrupt controller.
 ; This number is not equal to the maximum interrupt number (256) because
index 2cb8dfe..dd77a0c 100644 (file)
@@ -101,11 +101,8 @@ ENTRY(EV_MachineCheck)
        lr  r0, [efa]
        mov r1, sp
 
        lr  r0, [efa]
        mov r1, sp
 
-       ; hardware auto-disables MMU, re-enable it to allow kernel vaddr
-       ; access for say stack unwinding of modules for crash dumps
-       lr      r3, [ARC_REG_PID]
-       or      r3, r3, MMU_ENABLE
-       sr      r3, [ARC_REG_PID]
+       ; MC excpetions disable MMU
+       ARC_MMU_REENABLE r3
 
        lsr     r3, r2, 8
        bmsk    r3, r3, 7
 
        lsr     r3, r2, 8
        bmsk    r3, r3, 7