This is an automated email from Gerrit.

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

-- gerrit

commit 447071fe4cf84fc785910f0854f5b797dc510ec5
Author: Tarek BOCHKATI <[email protected]>
Date:   Tue Jan 12 20:10:23 2021 +0100

    cortex_m: mark FPU register as non-existent instead of playing with num_regs
    
    Change-Id: Iac7c5bfbb95c8d9a8c6d65104d138692a44eca78
    Signed-off-by: Tarek BOCHKATI <[email protected]>

diff --git a/src/target/armv7m.h b/src/target/armv7m.h
index db6f8bc..5673b64 100644
--- a/src/target/armv7m.h
+++ b/src/target/armv7m.h
@@ -164,7 +164,12 @@ enum {
        /* Floating-point status register */
        ARMV7M_FPSCR,
 
+       /* for convenience add registers' block delimiters */
        ARMV7M_LAST_REG,
+       ARMV7M_CORE_FIRST_REG = ARMV7M_R0,
+       ARMV7M_CORE_LAST_REG = ARMV7M_xPSR,
+       ARMV7M_FPU_FIRST_REG = ARMV7M_D0,
+       ARMV7M_FPU_LAST_REG = ARMV7M_FPSCR,
 };
 
 enum {
@@ -174,8 +179,7 @@ enum {
        FPv5_DP,
 };
 
-#define ARMV7M_NUM_CORE_REGS (ARMV7M_xPSR + 1)
-#define ARMV7M_NUM_CORE_REGS_NOFP (ARMV7M_CONTROL + 1)
+#define ARMV7M_NUM_CORE_REGS (ARMV7M_CORE_LAST_REG - ARMV7M_CORE_FIRST_REG + 1)
 
 #define ARMV7M_COMMON_MAGIC 0x2A452A45
 
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index ac308b4..e544287 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -2040,19 +2040,11 @@ int cortex_m_examine(struct target *target)
                        armv7m->arm.is_armv6m = true;
                }
 
-               if (armv7m->fp_feature == FP_NONE &&
-                   armv7m->arm.core_cache->num_regs > 
ARMV7M_NUM_CORE_REGS_NOFP) {
-                       /* free unavailable FPU registers */
-                       size_t idx;
-
-                       for (idx = ARMV7M_NUM_CORE_REGS_NOFP;
-                            idx < armv7m->arm.core_cache->num_regs;
-                            idx++) {
-                               
free(armv7m->arm.core_cache->reg_list[idx].feature);
-                               
free(armv7m->arm.core_cache->reg_list[idx].reg_data_type);
-                       }
-                       armv7m->arm.core_cache->num_regs = 
ARMV7M_NUM_CORE_REGS_NOFP;
-               }
+               /* Check for FPU, otherwise mark FPU register as non-existent */
+               if (armv7m->fp_feature == FP_NONE)
+                       for (size_t idx = ARMV7M_FPU_FIRST_REG; idx <= 
ARMV7M_FPU_LAST_REG; idx++)
+                               armv7m->arm.core_cache->reg_list[idx].exist = 
false;
+
 
                if (!armv7m->stlink) {
                        if (i == 3 || i == 4)

-- 


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

Reply via email to