Bläddra i källkod

fix(xtensa): fix registers curruption on context switch

a6, a7 registers may be corrupted on multicore ESP chips while FreeRTOS
Kernel SMP context switch
Alexey Lapshin 2 år sedan
förälder
incheckning
33d9fd629d
1 ändrade filer med 4 tillägg och 0 borttagningar
  1. 4 0
      components/xtensa/xtensa_vectors.S

+ 4 - 0
components/xtensa/xtensa_vectors.S

@@ -1163,13 +1163,17 @@ _xt_coproc_exc:
     bnone   a2,  a0, .L_xt_coproc_done      /* if no match then done     */
     and     a2,  a2, a0                     /* a2 = which CPs to restore */
     extui   a2,  a2, 0, 8                   /* extract low 8 bits        */
+#if portNUM_PROCESSORS == 1
     s32i    a6,  sp, XT_STK_A6              /* save extra needed regs    */
     s32i    a7,  sp, XT_STK_A7
+#endif /* portNUM_PROCESSORS == 1 */
     s32i    a13, sp, XT_STK_A13
     s32i    a14, sp, XT_STK_A14
     call0   _xt_coproc_restorecs            /* restore CP registers      */
+#if portNUM_PROCESSORS == 1
     l32i    a6,  sp, XT_STK_A6              /* restore saved registers   */
     l32i    a7,  sp, XT_STK_A7
+#endif /* portNUM_PROCESSORS == 1 */
     l32i    a13, sp, XT_STK_A13
     l32i    a14, sp, XT_STK_A14
     j       .L_xt_coproc_done