From ba3558c772ce1ac64d07f46b8c763349a0e51ba3 Mon Sep 17 00:00:00 2001
From: Vineet Gupta <vgupta@synopsys.com>
Date: Mon, 27 May 2013 18:51:27 +0530
Subject: ARC: K/U SP saved from one location in stack switching macro

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 <vgupta@synopsys.com>
---
 arch/arc/include/asm/entry.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

(limited to 'arch/arc')

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
 
-- 
cgit v1.2.3