From a12c15e21f663550de518595e606633bf82b5d04 Mon Sep 17 00:00:00 2001 From: David Ung Date: Thu, 23 Apr 2015 14:49:01 -0700 Subject: [PATCH] aarch64: Enable resuming with address Enable resuming to an address. Change-Id: I29c7d3b56f6cbf8b3cd02c93733fc96f45000af3 Signed-off-by: David Ung Signed-off-by: Matthias Welwarsky --- src/target/aarch64.c | 14 +++++--------- 1 file 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; -- 2.39.5