projects
/
riscv-isa-sim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e36bacd
)
Don't waste time spinning in place in debug mode
author
Tim Newsome
<tim@sifive.com>
Wed, 22 Feb 2017 03:32:24 +0000
(19:32 -0800)
committer
Tim Newsome
<tim@sifive.com>
Wed, 22 Feb 2017 03:32:24 +0000
(19:32 -0800)
riscv/execute.cc
patch
|
blob
|
history
diff --git
a/riscv/execute.cc
b/riscv/execute.cc
index eb9fe4bd9ac109929ca5784905c6adb21e45f778..1e63cf02ec51b40a849b5342aa965e7d9e7e0b0b 100644
(file)
--- a/
riscv/execute.cc
+++ b/
riscv/execute.cc
@@
-69,10
+69,6
@@
void processor_t::step(size_t n)
} else if (state.dcsr.halt) {
enter_debug_mode(DCSR_CAUSE_HALT);
}
} else if (state.dcsr.halt) {
enter_debug_mode(DCSR_CAUSE_HALT);
}
- } else {
- // In Debug Mode, just do 11 steps at a time. Otherwise we're going to be
- // spinning the rest of the time anyway.
- n = std::min(n, (size_t) 11);
}
while (n > 0) {
}
while (n > 0) {
@@
-120,6
+116,13
@@
void processor_t::step(size_t n)
// enter_debug_mode changed state.pc, so we can't just continue.
break;
}
// enter_debug_mode changed state.pc, so we can't just continue.
break;
}
+
+ if (unlikely(state.pc >= DEBUG_ROM_ENTRY &&
+ state.pc < DEBUG_ROM_ENTRY + DEBUG_ROM_ENTRY_SIZE)) {
+ // We're spinning waiting for the debugger to tell us something.
+ // Let's go talk to the debugger.
+ return;
+ }
}
}
else while (instret < n)
}
}
else while (instret < n)