aboutsummaryrefslogtreecommitdiff
path: root/src/rtos/rtos_chibios_stackings.c
diff options
context:
space:
mode:
authorChristian Gudrian <christian.gudrian@gmx.de>2014-10-24 23:22:40 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2014-11-24 22:22:11 +0000
commitf83e1dc13fb79957dcb7de668628bf9e0762a2c1 (patch)
tree11eff123c40039012cd78be2da2152d07a5bacb6 /src/rtos/rtos_chibios_stackings.c
parent8b99681346c71b7fa6358bf79becaaecb6151f4a (diff)
Added FPU support for ChibiOS/RT
When an enabled FPU is detected we now use an appropriate stacking. Change-Id: I1b0f43ec22e1c55c4f10e2ffa97d4aaa77bca5ee Signed-off-by: Christian Gudrian <christian.gudrian@gmx.de> Reviewed-on: http://openocd.zylin.com/2354 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/rtos/rtos_chibios_stackings.c')
-rw-r--r--src/rtos/rtos_chibios_stackings.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/rtos/rtos_chibios_stackings.c b/src/rtos/rtos_chibios_stackings.c
index 0b5d0632..ed485616 100644
--- a/src/rtos/rtos_chibios_stackings.c
+++ b/src/rtos/rtos_chibios_stackings.c
@@ -55,3 +55,31 @@ const struct rtos_register_stacking rtos_chibios_arm_v7m_stacking = {
0, /* stack_alignment */
rtos_chibios_arm_v7m_stack_offsets /* register_offsets */
};
+
+static const struct stack_register_offset rtos_chibios_arm_v7m_stack_offsets_w_fpu[ARMV7M_NUM_CORE_REGS] = {
+ { -1, 32 }, /* r0 */
+ { -1, 32 }, /* r1 */
+ { -1, 32 }, /* r2 */
+ { -1, 32 }, /* r3 */
+ { 0x40, 32 }, /* r4 */
+ { 0x44, 32 }, /* r5 */
+ { 0x48, 32 }, /* r6 */
+ { 0x4c, 32 }, /* r7 */
+ { 0x50, 32 }, /* r8 */
+ { 0x54, 32 }, /* r9 */
+ { 0x58, 32 }, /* r10 */
+ { 0x5c, 32 }, /* r11 */
+ { -1, 32 }, /* r12 */
+ { -2, 32 }, /* sp */
+ { -1, 32 }, /* lr */
+ { 0x60, 32 }, /* pc */
+ { -1, 32 }, /* xPSR */
+};
+
+const struct rtos_register_stacking rtos_chibios_arm_v7m_stacking_w_fpu = {
+ 0x64, /* stack_registers_size */
+ -1, /* stack_growth_direction */
+ ARMV7M_NUM_CORE_REGS, /* num_output_registers */
+ 0, /* stack_alignment */
+ rtos_chibios_arm_v7m_stack_offsets_w_fpu /* register_offsets */
+};