projects
/
fw
/
openocd
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
target/xtensa: fix step state transition
[fw/openocd]
/
src
/
target
/
xtensa
/
xtensa.c
diff --git
a/src/target/xtensa/xtensa.c
b/src/target/xtensa/xtensa.c
index 0c975a4ea6e043e729f53d6725878d0b968e0f05..2e978b387fbed5e8ccfabe056ec49e4d42e79625 100644
(file)
--- a/
src/target/xtensa/xtensa.c
+++ b/
src/target/xtensa/xtensa.c
@@
-1586,11
+1586,8
@@
int xtensa_do_step(struct target *target, int current, target_addr_t address, in
target->state = TARGET_RUNNING;
return ERROR_FAIL;
}
target->state = TARGET_RUNNING;
return ERROR_FAIL;
}
- target->debug_reason = DBG_REASON_SINGLESTEP;
- target->state = TARGET_HALTED;
xtensa_fetch_all_regs(target);
xtensa_fetch_all_regs(target);
-
cur_pc = xtensa_reg_get(target, XT_REG_IDX_PC);
LOG_TARGET_DEBUG(target,
cur_pc = xtensa_reg_get(target, XT_REG_IDX_PC);
LOG_TARGET_DEBUG(target,
@@
-1620,6
+1617,10
@@
int xtensa_do_step(struct target *target, int current, target_addr_t address, in
LOG_DEBUG("Stepped from %" PRIX32 " to %" PRIX32, oldpc, cur_pc);
break;
} while (true);
LOG_DEBUG("Stepped from %" PRIX32 " to %" PRIX32, oldpc, cur_pc);
break;
} while (true);
+
+ target->debug_reason = DBG_REASON_SINGLESTEP;
+ target->state = TARGET_HALTED;
+ target_call_event_callbacks(target, TARGET_EVENT_HALTED);
LOG_DEBUG("Done stepping, PC=%" PRIX32, cur_pc);
if (cause & DEBUGCAUSE_DB) {
LOG_DEBUG("Done stepping, PC=%" PRIX32, cur_pc);
if (cause & DEBUGCAUSE_DB) {