xtensa: move a3 save in handler instead of _xtensa_context_save

As in _xtensa_syscall_handler, a3 was save and reused before
_xtensa_context_save, a3 save in _xtensa_context_save will generate
error.

Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
This commit is contained in:
zhuyanlin 2022-01-10 17:39:22 +08:00 committed by Abdelatif Guettouche
parent 561fa88ed1
commit 88f5a209ce
4 changed files with 9 additions and 1 deletions

View File

@ -115,7 +115,6 @@
_xtensa_context_save:
s32i a3, a2, (4 * REG_A3)
s32i a4, a2, (4 * REG_A4)
s32i a5, a2, (4 * REG_A5)
s32i a6, a2, (4 * REG_A6)

View File

@ -312,6 +312,7 @@ _xtensa_level1_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it, it's the register save
@ -415,6 +416,7 @@ _xtensa_level2_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it, it's the register save
@ -493,6 +495,7 @@ _xtensa_level3_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it, it's the register save
@ -571,6 +574,7 @@ _xtensa_level4_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it, it's the register save
@ -649,6 +653,7 @@ _xtensa_level5_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it, it's the register save
@ -727,6 +732,7 @@ _xtensa_level6_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it, it's the register save

View File

@ -127,6 +127,7 @@ _xtensa_panic:
*/
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Switch to an interrupt stack if we have one */

View File

@ -223,6 +223,7 @@ _xtensa_user_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Save current SP before (possibly) overwriting it,
@ -517,6 +518,7 @@ _xtensa_coproc_handler:
s32i a2, sp, (4 * REG_A2)
mov a2, sp /* Address of state save on stack */
s32i a3, sp, (4 * REG_A3)
call0 _xtensa_context_save /* Save full register state */
/* Switch to an interrupt stack if we have one */