Aguila
Fork of mbed-rtos by
Diff: rtx/TARGET_CORTEX_A/HAL_CA.c
- Revision:
- 92:bc9729798a19
- Parent:
- 68:d3d0e710b443
--- a/rtx/TARGET_CORTEX_A/HAL_CA.c Wed Sep 16 11:15:38 2015 +0100
+++ b/rtx/TARGET_CORTEX_A/HAL_CA.c Fri Sep 25 13:30:34 2015 +0100
@@ -91,18 +91,16 @@
static __inline U32 *rt_ret_regs (P_TCB p_TCB) {
/* Get pointer to task return value registers (R0..R3) in Stack */
-#if (__TARGET_FPU_VFP)
- if (p_TCB->stack_frame & 0x2) {
- /* Extended Stack Frame: S0-31,FPSCR,Reserved,R4-R11,R0-R3,R12,LR,PC,xPSR */
- return (U32 *)(p_TCB->tsk_stack + 8*4 + 34*4);
+ if (p_TCB->stack_frame & 0x4) {
+ /* NEON/D32 Stack Frame: D0-31,FPSCR,Reserved,R4-R11,R0-R3,R12,LR,PC,xPSR */
+ return (U32 *)(p_TCB->tsk_stack + 8*4 + 2*4 + 32*8);
+ } else if (p_TCB->stack_frame & 0x2) {
+ /* VFP/D16 Stack Frame: D0-D15/S0-31,FPSCR,Reserved,R4-R11,R0-R3,R12,LR,PC,xPSR */
+ return (U32 *)(p_TCB->tsk_stack + 8*4 + 2*4 + 32*4);
} else {
/* Basic Stack Frame: R4-R11,R0-R3,R12,LR,PC,xPSR */
return (U32 *)(p_TCB->tsk_stack + 8*4);
}
-#else
- /* Stack Frame: R4-R11,R0-R3,R12,LR,PC,xPSR */
- return (U32 *)(p_TCB->tsk_stack + 8*4);
-#endif
}
void rt_ret_val (P_TCB p_TCB, U32 v0) {
