Add CFI frame unwind info in portable/IAR/RXv2/port_asm.s (#1341)
This allows the IAR debugger to display the callstack beyond
__interrupt_27 when a breakpoint in vTaskSwitchContext is made.
diff --git a/portable/IAR/RXv2/port_asm.s b/portable/IAR/RXv2/port_asm.s
index cbebcf3..122f8a4 100644
--- a/portable/IAR/RXv2/port_asm.s
+++ b/portable/IAR/RXv2/port_asm.s
@@ -34,6 +34,37 @@
EXTERN _pxCurrentTCB
EXTERN _vTaskSwitchContext
+ CFI Names cfiNames0
+ CFI StackFrame CFA SP DATA
+ CFI VirtualResource ?RET:32
+ CFI Resource R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32, R8:32
+ CFI Resource R9:32, R10:32, R11:32, R12:32, R13:32, R14:32, R15:32
+ CFI Resource SP:32
+ CFI EndNames cfiNames0
+
+ CFI Common cfiCommon0 Using cfiNames0
+ CFI CodeAlign 1
+ CFI DataAlign 1
+ CFI ReturnAddress ?RET CODE
+ CFI CFA SP+4
+ CFI ?RET Frame(CFA, -4)
+ CFI R1 Undefined
+ CFI R2 Undefined
+ CFI R3 Undefined
+ CFI R4 Undefined
+ CFI R5 Undefined
+ CFI R6 SameValue
+ CFI R7 SameValue
+ CFI R8 SameValue
+ CFI R9 SameValue
+ CFI R10 SameValue
+ CFI R11 SameValue
+ CFI R12 SameValue
+ CFI R13 SameValue
+ CFI R14 Undefined
+ CFI R15 Undefined
+ CFI EndCommon cfiCommon0
+
RSEG CODE:CODE(4)
_prvStartFirstTask:
@@ -91,6 +122,9 @@
/*-----------------------------------------------------------*/
/* The software interrupt - overwrite the default 'weak' definition. */
+ CFI Block cfiBlock0 Using cfiCommon0
+ CFI Function ___interrupt_27
+ CODE
___interrupt_27:
/* Re-enable interrupts. */
@@ -151,6 +185,24 @@
MVTIPL #configMAX_SYSCALL_INTERRUPT_PRIORITY
/* Select the next task to run. */
+ CFI ?RET Frame(CFA, -8)
+ CFI R15 Frame(CFA, -12)
+ CFI R14 Frame(CFA, -16)
+ CFI R13 Frame(CFA, -20)
+ CFI R12 Frame(CFA, -24)
+ CFI R11 Frame(CFA, -28)
+ CFI R10 Frame(CFA, -32)
+ CFI R9 Frame(CFA, -36)
+ CFI R8 Frame(CFA, -40)
+ CFI R7 Frame(CFA, -44)
+ CFI R6 Frame(CFA, -48)
+ CFI R5 Frame(CFA, -52)
+ CFI R4 Frame(CFA, -56)
+ CFI R3 Frame(CFA, -60)
+ CFI R2 Frame(CFA, -64)
+ CFI R1 Frame(CFA, -68)
+ CFI CFA SP+96
+ CFI FunCall _vTaskSwitchContext
BSR.A _vTaskSwitchContext
/* Reset the interrupt mask as no more data structure access is required. */
@@ -194,6 +246,7 @@
RTE
NOP
NOP
+ CFI EndBlock cfiBlock0
/*-----------------------------------------------------------*/