From: Vineet Gupta Date: Mon, 27 May 2013 13:21:27 +0000 (+0530) Subject: ARC: Exception Entry tweaks - SP saved from one location in code X-Git-Tag: next-20130619~114^2~9 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=d69f0aedeec88ae56b6a5fdc93eadb07fe948ad3;p=karo-tx-linux.git ARC: Exception Entry tweaks - SP saved from one location in code Save k/u mode SP on kernel stack from single place. This paves way for further simplifications. There's an overhead of 1 insn for the non-common case of interrupt taken from kernel mode. Signed-off-by: Vineet Gupta --- diff --git a/arch/arc/include/asm/entry.h b/arch/arc/include/asm/entry.h index 5191945f3d39..2cf6aa08cfca 100644 --- a/arch/arc/include/asm/entry.h +++ b/arch/arc/include/asm/entry.h @@ -290,9 +290,8 @@ * safe-keeping not really needed, but it keeps the epilogue code * (SP restore) simpler/uniform. */ - b.d 77f - - st.a sp, [sp, -12] ; Make room for orig_r0 and orig_r8 + b.d 66f + mov r9, sp 88: /*------Intr/Ecxp happened in user mode, "switch" stack ------ */ @@ -311,6 +310,7 @@ /* With current tsk in r9, get it's kernel mode stack base */ GET_TSK_STACK_BASE r9, r9 +66: /* Save Pre Intr/Exception User SP on kernel stack */ st.a sp, [r9, -12] ; Make room for orig_r0 and orig_r8 @@ -323,7 +323,7 @@ /* set SP to point to kernel mode stack */ mov sp, r9 -77: /* ----- Stack Switched to kernel Mode, Now save REG FILE ----- */ + /* ----- Stack Switched to kernel Mode, Now save REG FILE ----- */ .endm