|
|
@@ -228,6 +228,8 @@ xt_highintx:
|
|
|
s32i a0, sp, XT_STK_PS
|
|
|
rsr a0, EPC_X /* save interruptee's PC */
|
|
|
s32i a0, sp, XT_STK_PC
|
|
|
+ rsr a0, EXCSAVE_X /* save interruptee's a0 */
|
|
|
+ s32i a0, sp, XT_STK_A0
|
|
|
#if XCHAL_HAVE_WINDOWED
|
|
|
s32e a0, sp, -16 /* for debug backtrace */
|
|
|
#endif
|
|
|
@@ -279,11 +281,6 @@ xt_highintx:
|
|
|
/* Found the reason, now save it. */
|
|
|
s32i a0, sp, XT_STK_EXCCAUSE
|
|
|
|
|
|
- /* _xt_context_save seems to save the current a0, but we need the interuptees a0. Fix this. */
|
|
|
- rsr a0, EXCSAVE_X /* save interruptee's a0 */
|
|
|
-
|
|
|
- s32i a0, sp, XT_STK_A0
|
|
|
-
|
|
|
/* Set up PS for C, disable all interrupts except NMI and debug, and clear EXCM. */
|
|
|
movi a0, PS_INTLEVEL(5) | PS_UM | PS_WOE
|
|
|
wsr a0, PS
|