This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new a4e93be arch:xtensa: fix sp duplicate reduce in handler enter
a4e93be is described below
commit a4e93be0fb386b74590cf958458c046b29f5e1e2
Author: zhuyanlin <[email protected]>
AuthorDate: Wed Dec 22 17:59:57 2021 +0800
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 <[email protected]>
---
arch/xtensa/src/common/xtensa_int_handlers.S | 22 +++++++++++-----------
arch/xtensa/src/common/xtensa_user_handler.S | 6 +++---
arch/xtensa/src/common/xtensa_vectors.S | 8 ++++----
3 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/arch/xtensa/src/common/xtensa_int_handlers.S
b/arch/xtensa/src/common/xtensa_int_handlers.S
index 928a965..b649e8d 100644
--- a/arch/xtensa/src/common/xtensa_int_handlers.S
+++ b/arch/xtensa/src/common/xtensa_int_handlers.S
@@ -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)
diff --git a/arch/xtensa/src/common/xtensa_user_handler.S
b/arch/xtensa/src/common/xtensa_user_handler.S
index 190d509..fd04c6f 100644
--- a/arch/xtensa/src/common/xtensa_user_handler.S
+++ b/arch/xtensa/src/common/xtensa_user_handler.S
@@ -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)
diff --git a/arch/xtensa/src/common/xtensa_vectors.S
b/arch/xtensa/src/common/xtensa_vectors.S
index 238f5da..e0ef459 100644
--- a/arch/xtensa/src/common/xtensa_vectors.S
+++ b/arch/xtensa/src/common/xtensa_vectors.S
@@ -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)