diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2014-10-14 12:23:50 +0530 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2015-06-19 18:09:35 +0530 |
commit | f033737e77d98893f3d03586215aeec026dd7e2f (patch) | |
tree | 0066f35ebbfc07b64f36c0b08b796556b614749a /arch/arc | |
parent | 09f3b37e4e3bbe22444617c273a3c046aade5db2 (diff) | |
download | op-kernel-dev-f033737e77d98893f3d03586215aeec026dd7e2f.zip op-kernel-dev-f033737e77d98893f3d03586215aeec026dd7e2f.tar.gz |
ARC: entry.S: canonical'ize EXCEPTION_{PROLOGUE,EPILOGUE}
-EXCEPTION_EPILOGUE introduced
-EXCEPTION_PROLOGUE now also includes reg file saving
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc')
-rw-r--r-- | arch/arc/include/asm/entry.h | 17 | ||||
-rw-r--r-- | arch/arc/kernel/entry.S | 4 |
2 files changed, 3 insertions, 18 deletions
diff --git a/arch/arc/include/asm/entry.h b/arch/arc/include/asm/entry.h index 934bb83..f3927a1 100644 --- a/arch/arc/include/asm/entry.h +++ b/arch/arc/include/asm/entry.h @@ -401,21 +401,6 @@ /* ARC700 doesn't provide auto-stack switching */ SWITCH_TO_KERNEL_STK - /* save the regfile */ - SAVE_ALL_SYS -.endm - -/*-------------------------------------------------------------- - * Save all registers used by Exceptions (TLB Miss, Prot-V, Mem err etc) - * Requires SP to be already switched to kernel mode Stack - * sp points to the next free element on the stack at exit of this macro. - * Registers are pushed / popped in the order defined in struct ptregs - * in asm/ptrace.h - * Note that syscalls are implemented via TRAP which is also a exception - * from CPU's point of view - *-------------------------------------------------------------*/ -.macro SAVE_ALL_SYS - lr r9, [ecr] st r9, [sp, 8] /* ECR */ st r0, [sp, 4] /* orig_r0, needed only for sys calls */ @@ -446,7 +431,7 @@ * for memory load operations. If used in that way interrupts are deffered * by hardware and that is not good. *-------------------------------------------------------------*/ -.macro RESTORE_ALL_SYS +.macro EXCEPTION_EPILOGUE POPAX erbta POPAX lp_start POPAX lp_end diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S index 03a3495..d8ec722 100644 --- a/arch/arc/kernel/entry.S +++ b/arch/arc/kernel/entry.S @@ -638,7 +638,7 @@ restore_regs : ; if Returning from Exception bbit0 r10, STATUS_AE_BIT, not_exception - RESTORE_ALL_SYS + EXCEPTION_EPILOGUE rtie ; Not Exception so maybe Interrupts (Level 1 or 2) @@ -704,7 +704,7 @@ not_level1_interrupt: ;this case is for syscalls or Exceptions (with fake rtie) - RESTORE_ALL_SYS + EXCEPTION_EPILOGUE debug_marker_syscall: rtie |