mirror of
https://github.com/apache/nuttx.git
synced 2026-03-24 07:35:07 +08:00
arch:xtensa: fix sp duplicate reduce in handler enter
In xtensa/include/irq.h the XCPTCONTEXT_SIZE is `#define XCPTCONTEXT_SIZE ((4 * XCPTCONTEXT_REGS) + 0x20)` XCPTCONTEXT_SIZE is already byte size of xcpcontext Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
This commit is contained in:
committed by
Petro Karashchenko
parent
a8ab090764
commit
a4e93be0fb
@@ -295,7 +295,7 @@ g_intstacktop:
|
||||
_xtensa_level1_handler:
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, PS /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -399,7 +399,7 @@ _xtensa_level1_handler:
|
||||
_xtensa_level2_handler:
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_2 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -478,7 +478,7 @@ _xtensa_level2_handler:
|
||||
_xtensa_level3_handler:
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_3 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -557,7 +557,7 @@ _xtensa_level3_handler:
|
||||
_xtensa_level4_handler:
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_4 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -636,7 +636,7 @@ _xtensa_level4_handler:
|
||||
_xtensa_level5_handler:
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_5 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -715,7 +715,7 @@ _xtensa_level5_handler:
|
||||
_xtensa_level6_handler:
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_6 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -833,7 +833,7 @@ _xtensa_level2_handler:
|
||||
/* For now, just panic */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_2 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -867,7 +867,7 @@ _xtensa_level3_handler:
|
||||
/* For now, just panic */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_3 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -903,7 +903,7 @@ _xtensa_level4_handler:
|
||||
/* For now, just panic */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_4 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -939,7 +939,7 @@ _xtensa_level5_handler:
|
||||
/* For now, just panic */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_5 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -975,7 +975,7 @@ _xtensa_level6_handler:
|
||||
/* For now, just panic */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS_6 /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
|
||||
@@ -210,7 +210,7 @@ _xtensa_user_handler:
|
||||
/* Allocate exception frame and save minimal context. */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, PS /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -332,7 +332,7 @@ _xtensa_syscall_handler:
|
||||
/* Allocate stack frame and save A0, A1, and PS */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, PS /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -505,7 +505,7 @@ _xtensa_coproc_handler:
|
||||
/* For now, just panic */
|
||||
|
||||
mov a0, sp /* Save SP in A0 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, PS /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
|
||||
@@ -193,7 +193,7 @@ _xtensa_nmi_vector:
|
||||
wsr a0, EXCSAVE + XCHAL_NMILEVEL /* Preserve a0 */
|
||||
|
||||
mov a0, sp /* sp == a1 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS + XCHAL_NMILEVEL /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -235,7 +235,7 @@ _xtensa_nmi_vector:
|
||||
_debug_exception_vector:
|
||||
wsr a0, EXCSAVE + XCHAL_DEBUGLEVEL /* Preserve a0 */
|
||||
mov a0, sp /* sp == a1 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, EPS + XCHAL_DEBUGLEVEL /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -276,7 +276,7 @@ _double_exception_vector:
|
||||
wsr a0, EXCSAVE_1 /* Preserve a0 */
|
||||
|
||||
mov a0, sp /* sp == a1 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, PS /* Save interruptee's PS -- REVISIT */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
@@ -320,7 +320,7 @@ _kernel_exception_vector:
|
||||
wsr a0, EXCSAVE_1 /* Preserve a0 */
|
||||
|
||||
mov a0, sp /* sp == a1 */
|
||||
addi sp, sp, -(4 * XCPTCONTEXT_SIZE) /* Allocate interrupt stack frame */
|
||||
addi sp, sp, -XCPTCONTEXT_SIZE /* Allocate interrupt stack frame */
|
||||
s32i a0, sp, (4 * REG_A1) /* Save pre-interrupt SP */
|
||||
rsr a0, PS /* Save interruptee's PS */
|
||||
s32i a0, sp, (4 * REG_PS)
|
||||
|
||||
Reference in New Issue
Block a user