diff options
Diffstat (limited to 'riscv/execute.cc')
-rw-r--r-- | riscv/execute.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/riscv/execute.cc b/riscv/execute.cc index b110d09..e639e90 100644 --- a/riscv/execute.cc +++ b/riscv/execute.cc @@ -130,9 +130,11 @@ void processor_t::step(size_t n) { 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)) { |