aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Ung <davidu@nvidia.com>2015-04-23 14:49:01 -0700
committerMatthias Welwarsky <matthias.welwarsky@sysgo.com>2017-02-10 13:58:05 +0100
commita12c15e21f663550de518595e606633bf82b5d04 (patch)
tree50b41b829dcdf34549b4d0f96f6075305c504ab1
parent13d13b2e2a5ed12bcc8f2f0dc44bb2beface4946 (diff)
aarch64: Enable resuming with address
Enable resuming to an address. Change-Id: I29c7d3b56f6cbf8b3cd02c93733fc96f45000af3 Signed-off-by: David Ung <david.ung.42@gmail.com> Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
-rw-r--r--src/target/aarch64.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/target/aarch64.c b/src/target/aarch64.c
index 276f4a3a..a2b020bf 100644
--- a/src/target/aarch64.c
+++ b/src/target/aarch64.c
@@ -1023,12 +1023,7 @@ static int aarch64_resume(struct target *target, int current,
target_addr_t address, int handle_breakpoints, int debug_execution)
{
int retval = 0;
- uint64_t resume_addr;
-
- if (address) {
- LOG_DEBUG("resuming with custom address not supported");
- return ERROR_FAIL;
- }
+ uint64_t addr = address;
/* dummy resume for smp toggle in order to reduce gdb impact */
if ((target->smp) && (target->gdb_service->core[1] != -1)) {
@@ -1039,7 +1034,8 @@ static int aarch64_resume(struct target *target, int current,
target_call_event_callbacks(target, TARGET_EVENT_RESUMED);
return 0;
}
- aarch64_internal_restore(target, current, &resume_addr, handle_breakpoints, debug_execution);
+ aarch64_internal_restore(target, current, &addr, handle_breakpoints,
+ debug_execution);
if (target->smp) {
target->gdb_service->core[0] = -1;
retval = aarch64_restore_smp(target, handle_breakpoints);
@@ -1051,11 +1047,11 @@ static int aarch64_resume(struct target *target, int current,
if (!debug_execution) {
target->state = TARGET_RUNNING;
target_call_event_callbacks(target, TARGET_EVENT_RESUMED);
- LOG_DEBUG("target resumed at 0x%" PRIx64, resume_addr);
+ LOG_DEBUG("target resumed at 0x%" PRIu64, addr);
} else {
target->state = TARGET_DEBUG_RUNNING;
target_call_event_callbacks(target, TARGET_EVENT_DEBUG_RESUMED);
- LOG_DEBUG("target debug resumed at 0x%" PRIx64, resume_addr);
+ LOG_DEBUG("target debug resumed at 0x%" PRIu64, addr);
}
return ERROR_OK;