summaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
Diffstat (limited to 'src/target')
-rw-r--r--src/target/arm11.c6
-rw-r--r--src/target/armv4_5.c6
-rw-r--r--src/target/armv7m.c6
-rw-r--r--src/target/target.h10
4 files changed, 9 insertions, 19 deletions
diff --git a/src/target/arm11.c b/src/target/arm11.c
index a197945f..890b836b 100644
--- a/src/target/arm11.c
+++ b/src/target/arm11.c
@@ -1040,12 +1040,6 @@ int arm11_get_gdb_reg_list(struct target_s *target, struct reg_s **reg_list[], i
arm11_common_t * arm11 = target->arch_info;
- if (target->state != TARGET_HALTED)
- {
- WARNING("target was not halted");
- return ERROR_TARGET_NOT_HALTED;
- }
-
*reg_list_size = ARM11_GDB_REGISTER_COUNT;
*reg_list = malloc(sizeof(reg_t*) * ARM11_GDB_REGISTER_COUNT);
diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c
index 82e65c78..ff5f4735 100644
--- a/src/target/armv4_5.c
+++ b/src/target/armv4_5.c
@@ -474,12 +474,6 @@ int armv4_5_get_gdb_reg_list(target_t *target, reg_t **reg_list[], int *reg_list
armv4_5_common_t *armv4_5 = target->arch_info;
int i;
- if (target->state != TARGET_HALTED)
- {
- ERROR("Target not halted");
- return ERROR_TARGET_NOT_HALTED;
- }
-
*reg_list_size = 26;
*reg_list = malloc(sizeof(reg_t*) * (*reg_list_size));
diff --git a/src/target/armv7m.c b/src/target/armv7m.c
index 6ee5903a..f1f0ac96 100644
--- a/src/target/armv7m.c
+++ b/src/target/armv7m.c
@@ -321,12 +321,6 @@ int armv7m_get_gdb_reg_list(target_t *target, reg_t **reg_list[], int *reg_list_
armv7m_common_t *armv7m = target->arch_info;
int i;
- if (target->state != TARGET_HALTED)
- {
- ERROR("Target not halted");
- return ERROR_TARGET_NOT_HALTED;
- }
-
*reg_list_size = 26;
*reg_list = malloc(sizeof(reg_t*) * (*reg_list_size));
diff --git a/src/target/target.h b/src/target/target.h
index 8d70e77e..e0286650 100644
--- a/src/target/target.h
+++ b/src/target/target.h
@@ -127,7 +127,15 @@ typedef struct target_type_s
int (*soft_reset_halt)(struct target_s *target);
int (*prepare_reset_halt)(struct target_s *target);
- /* target register access for gdb */
+ /* target register access for gdb.
+ *
+ * Danger! this function will succeed even if the target is running
+ * and return a register list with dummy values.
+ *
+ * The reason is that GDB connection will fail without a valid register
+ * list, however it is after GDB is connected that monitor commands can
+ * be run to properly initialize the target
+ */
int (*get_gdb_reg_list)(struct target_s *target, struct reg_s **reg_list[], int *reg_list_size);
/* target memory access