]> git.sur5r.net Git - openocd/commitdiff
aarch64: Enable resuming with address
authorDavid Ung <davidu@nvidia.com>
Thu, 23 Apr 2015 21:49:01 +0000 (14:49 -0700)
committerMatthias Welwarsky <matthias.welwarsky@sysgo.com>
Fri, 10 Feb 2017 12:58:05 +0000 (13:58 +0100)
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>
src/target/aarch64.c

index 276f4a3ab6beb9e68193afb559bcde97854bccd4..a2b020bfd1e87427de569c13c9110e76db51c605 100644 (file)
@@ -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;