This is an automated email from Gerrit.

Christian Gudrian ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/2354

-- gerrit

commit f019657392d2a0cfb56e68926788d20269ce1a81
Author: Christian Gudrian <[email protected]>
Date:   Fri Oct 24 23:22:40 2014 +0200

    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 <[email protected]>

diff --git a/src/rtos/ChibiOS.c b/src/rtos/ChibiOS.c
index 46fdca3..54ae907 100644
--- a/src/rtos/ChibiOS.c
+++ b/src/rtos/ChibiOS.c
@@ -253,11 +253,9 @@ static int ChibiOS_update_stacking(struct rtos *rtos)
                        /* Check if CP10 and CP11 are set to full access.
                         * In ChibiOS this is done in ResetHandler() in crt0.c 
*/
                        if (cpacr & 0x00F00000) {
-                               /* Found target with enabled FPU */
-                               /* FIXME: Need to figure out how to specify the 
FPU registers */
-                               LOG_ERROR("ChibiOS ARM v7m targets with enabled 
FPU "
-                                                 " are NOT supported");
-                               return -1;
+                               LOG_DEBUG("Enabled FPU detected.");
+                               param->stacking_info = 
&rtos_chibios_arm_v7m_stacking_w_fpu;
+                               return 0;
                        }
                }
 
diff --git a/src/rtos/rtos_chibios_stackings.c 
b/src/rtos/rtos_chibios_stackings.c
index 0b5d063..ed48561 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 */
+};
diff --git a/src/rtos/rtos_chibios_stackings.h 
b/src/rtos/rtos_chibios_stackings.h
index b5eea64..8ba2a6c 100644
--- a/src/rtos/rtos_chibios_stackings.h
+++ b/src/rtos/rtos_chibios_stackings.h
@@ -28,5 +28,6 @@
 #include "rtos.h"
 
 extern const struct rtos_register_stacking rtos_chibios_arm_v7m_stacking;
+extern const struct rtos_register_stacking rtos_chibios_arm_v7m_stacking_w_fpu;
 
 #endif /* ifndef INCLUDED_RTOS_CHIBIOS_STACKINGS_H_ */

-- 

------------------------------------------------------------------------------
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to