]> granicus.if.org Git - esp-idf/commitdiff
Merge branch 'bugfix/cpu1_isr_stack_location' into 'master'
authorIvan Grokhotkov <ivan@espressif.com>
Wed, 29 Mar 2017 04:05:31 +0000 (12:05 +0800)
committerJeroen Domburg <jeroen@espressif.com>
Sat, 1 Apr 2017 08:56:21 +0000 (16:56 +0800)
Fix finding location of ISR stack space for CPU1

Up to now, the CPU1 interrupts erroneously used the area *after* the ISR stack region, leading to bugs in BT Classic. This fixes that.

See merge request !618

components/freertos/portasm.S

index ad65a103ed626e53440cf807f33fca4860746901..7f23e6283b7dbca009e128d49db89563d8496442 100644 (file)
@@ -132,8 +132,8 @@ _frxt_int_enter:
     l32i    a2,  a2, 0                  /* a2 = current TCB                */
     beqz    a2,  1f
     s32i    a1,  a2, TOPOFSTACK_OFFS    /* pxCurrentTCB->pxTopOfStack = SP */
-    movi    a1,  port_IntStackTop       /* a1 = top of intr stack          */
-       movi    a2,  configISR_STACK_SIZE
+    movi    a1,  port_IntStack+configISR_STACK_SIZE   /* a1 = top of intr stack for CPU 0  */
+    movi    a2,  configISR_STACK_SIZE   /* add configISR_STACK_SIZE * cpu_num to arrive at top of stack for cpu_num */
        mull    a2,  a4, a2
        add     a1,  a1, a2                                     /* for current proc */