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>
This commit is contained in:
parent
147aece29b
commit
ba3558c772
|
@ -290,9 +290,8 @@
|
||||||
* safe-keeping not really needed, but it keeps the epilogue code
|
* safe-keeping not really needed, but it keeps the epilogue code
|
||||||
* (SP restore) simpler/uniform.
|
* (SP restore) simpler/uniform.
|
||||||
*/
|
*/
|
||||||
b.d 77f
|
b.d 66f
|
||||||
|
mov r9, sp
|
||||||
st.a sp, [sp, -12] ; Make room for orig_r0 and orig_r8
|
|
||||||
|
|
||||||
88: /*------Intr/Ecxp happened in user mode, "switch" stack ------ */
|
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 */
|
/* With current tsk in r9, get it's kernel mode stack base */
|
||||||
GET_TSK_STACK_BASE r9, r9
|
GET_TSK_STACK_BASE r9, r9
|
||||||
|
|
||||||
|
66:
|
||||||
/* Save Pre Intr/Exception User SP on kernel stack */
|
/* Save Pre Intr/Exception User SP on kernel stack */
|
||||||
st.a sp, [r9, -12] ; Make room for orig_r0 and orig_r8
|
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 */
|
/* set SP to point to kernel mode stack */
|
||||||
mov sp, r9
|
mov sp, r9
|
||||||
|
|
||||||
77: /* ----- Stack Switched to kernel Mode, Now save REG FILE ----- */
|
/* ----- Stack Switched to kernel Mode, Now save REG FILE ----- */
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user