{
commit_log_stash_privilege(p);
reg_t npc = fetch.func(p, fetch.insn, pc);
- if (!invalid_pc(npc)) {
+ if (npc != PC_SERIALIZE_BEFORE) {
commit_log_print_insn(p->get_state(), pc, fetch.insn);
p->update_histogram(pc);
}
{
if (unlikely(!state.serialized && state.single_step == state.STEP_STEPPED)) {
state.single_step = state.STEP_NONE;
- enter_debug_mode(DCSR_CAUSE_STEP);
- // enter_debug_mode changed state.pc, so we can't just continue.
- break;
+ if (state.dcsr.cause == DCSR_CAUSE_NONE) {
+ enter_debug_mode(DCSR_CAUSE_STEP);
+ // enter_debug_mode changed state.pc, so we can't just continue.
+ break;
+ }
}
if (unlikely(state.single_step == state.STEP_STEPPING)) {