summaryrefslogtreecommitdiff
path: root/src/target/arm11.c
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-11-17 23:50:17 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-11-17 23:50:17 -0800
commitd6c8945662e6027f6ba12d73bac2473088672db5 (patch)
tree022750b4c487161ccdaeac9c24bb0754f55c8653 /src/target/arm11.c
parent0091e59d2a18c293fd952a9d707e609afdd6b17f (diff)
downloadopenocd+libswd-d6c8945662e6027f6ba12d73bac2473088672db5.tar.gz
openocd+libswd-d6c8945662e6027f6ba12d73bac2473088672db5.tar.bz2
openocd+libswd-d6c8945662e6027f6ba12d73bac2473088672db5.tar.xz
openocd+libswd-d6c8945662e6027f6ba12d73bac2473088672db5.zip
ARM: only use one set of dummy FPA registers
All ARM cores need to provide obsolete FPA registers in their GDB register dumps. (Even though cores with floating point support now generally use some version of VFP...) Clean up that support a bit by sharing the same dummy registers, and removing the duplicate copies. Eventually we shouldn't need to export those dummies. (This makes the ARMv7-M support include the armv4_5 header, and cleans up related #includes, but doesn't yet use anything from there except those dummies.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/target/arm11.c')
-rw-r--r--src/target/arm11.c41
1 files changed, 3 insertions, 38 deletions
diff --git a/src/target/arm11.c b/src/target/arm11.c
index 65e07809..5e732758 100644
--- a/src/target/arm11.c
+++ b/src/target/arm11.c
@@ -246,36 +246,6 @@ enum arm11_regcache_ids
#define ARM11_GDB_REGISTER_COUNT 26
-/* FIXME these are *identical* to the ARMv4_5 dummies ... except
- * for their names, and being static vs global, and having different
- * addresses. Ditto ARMv7a and ARMv7m dummies.
- */
-
-static uint8_t arm11_gdb_dummy_fp_value[12];
-
-static struct reg arm11_gdb_dummy_fp_reg =
-{
- .name = "GDB dummy floating-point register",
- .value = arm11_gdb_dummy_fp_value,
- .dirty = 0,
- .valid = 1,
- .size = 96,
- .arch_info = NULL,
-};
-
-static uint8_t arm11_gdb_dummy_fps_value[4];
-
-static struct reg arm11_gdb_dummy_fps_reg =
-{
- .name = "GDB dummy floating-point status register",
- .value = arm11_gdb_dummy_fps_value,
- .dirty = 0,
- .valid = 1,
- .size = 32,
- .arch_info = NULL,
-};
-
-
static int arm11_on_enter_debug_state(struct arm11_common *arm11);
static int arm11_step(struct target *target, int current,
uint32_t address, int handle_breakpoints);
@@ -1265,12 +1235,10 @@ static int arm11_get_gdb_reg_list(struct target *target,
*reg_list_size = ARM11_GDB_REGISTER_COUNT;
*reg_list = malloc(sizeof(struct reg*) * ARM11_GDB_REGISTER_COUNT);
+ /* nine unused legacy FPA registers are expected by GDB */
for (size_t i = 16; i < 24; i++)
- {
- (*reg_list)[i] = &arm11_gdb_dummy_fp_reg;
- }
-
- (*reg_list)[24] = &arm11_gdb_dummy_fps_reg;
+ (*reg_list)[i] = &arm_gdb_dummy_fp_reg;
+ (*reg_list)[24] = &arm_gdb_dummy_fps_reg;
for (size_t i = 0; i < ARM11_REGCACHE_COUNT; i++)
{
@@ -1954,9 +1922,6 @@ static int arm11_build_reg_cache(struct target *target)
NEW(struct reg, reg_list, ARM11_REGCACHE_COUNT);
NEW(struct arm11_reg_state, arm11_reg_states, ARM11_REGCACHE_COUNT);
- register_init_dummy(&arm11_gdb_dummy_fp_reg);
- register_init_dummy(&arm11_gdb_dummy_fps_reg);
-
arm11->reg_list = reg_list;
/* Build the process context cache */