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)

Reply via email to