aboutsummaryrefslogtreecommitdiff
path: root/src/target/dsp563xx.c
diff options
context:
space:
mode:
authorMathias Kuester <mkdorg@users.sourceforge.net>2010-02-14 12:59:10 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2010-02-14 12:59:10 -0800
commit52d4ba3467134a1489583dbb6d6de3002f0f76fa (patch)
treeff9dd2d2ca5246007eee132af40b36b1ad79fe5a /src/target/dsp563xx.c
parenta2ce3a51dfbc9760e7a4e3f5d5806a1de019721d (diff)
downloadriscv-openocd-52d4ba3467134a1489583dbb6d6de3002f0f76fa.zip
riscv-openocd-52d4ba3467134a1489583dbb6d6de3002f0f76fa.tar.gz
riscv-openocd-52d4ba3467134a1489583dbb6d6de3002f0f76fa.tar.bz2
fix crash with DSP563XX
When a DSP563xx-aware GDB asks OpenOCD for target registers, the result should be a GDB with register data ... not an OpenOCD crash. (Note that mainline GDB doesn't currently support this core, so for now, this requires a GDB with FreeScale patches.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/target/dsp563xx.c')
-rw-r--r--src/target/dsp563xx.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/target/dsp563xx.c b/src/target/dsp563xx.c
index 9e2f609..049ee1a 100644
--- a/src/target/dsp563xx.c
+++ b/src/target/dsp563xx.c
@@ -246,6 +246,29 @@ static const struct
/* *INDENT-ON* */
};
+static int dsp563xx_get_gdb_reg_list(struct target *target, struct reg **reg_list[],
+ int *reg_list_size)
+{
+ struct dsp563xx_common *dsp563xx = target_to_dsp563xx(target);
+ int i;
+
+ if (target->state != TARGET_HALTED)
+ {
+ return ERROR_TARGET_NOT_HALTED;
+ }
+
+ *reg_list_size = DSP563XX_NUMCOREREGS;
+ *reg_list = malloc(sizeof(struct reg *) * (*reg_list_size));
+
+ for (i = 0; i < DSP563XX_NUMCOREREGS; i++)
+ {
+ (*reg_list)[i] = &dsp563xx->core_cache->reg_list[i];
+ }
+
+ return ERROR_OK;
+
+}
+
int dsp563xx_read_core_reg(struct target *target, int num)
{
uint32_t reg_value;
@@ -974,6 +997,8 @@ struct target_type dsp563xx_target = {
.target_request_data = NULL,
+ .get_gdb_reg_list = dsp563xx_get_gdb_reg_list,
+
.halt = dsp563xx_halt,
.resume = dsp563xx_resume,
.step = dsp563xx_step,