Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Suggested in https://github.com/riscv-software-src/riscv-isa-sim/pull/1816#pullrequestreview-2331806142.
|
|
|
|
We hardwired mcountinihibit to 0 previously. Now, we implemented it.
Signed-off-by: Yangyu Chen <cyy@cyyself.name>
|
|
|
|
The debug spec 1.0.0-rc3 deprecates the dcsr.halt and lets the bit
become dcsr.nmip.
This commit separates the halt variable from the dcsr.nmip and
designates it as an internal variable for halt_on_reset (-H).
Additionally, this commit removes the notifying comment about the
deprecated dcsr.halt in the main loop.
|
|
Serialize after setting ELP. That way, we can hoist the check
outside of the main simulation loop.
|
|
|
|
This tracks whether the privilege / virtual mode was changed by the
execution of the current instruction.
|
|
../riscv/execute.cc: In function ‘void commit_log_print_insn(processor_t*, reg_t, insn_t)’:
../riscv/execute.cc:132:16: warning: ‘prefix’ may be used uninitialized [-Wmaybe-uninitialized]
132 | fprintf(log_file, " %c%-2d ", prefix, rd);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../riscv/execute.cc:88:10: note: ‘prefix’ was declared here
88 | char prefix;
| ^~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
It dates back to when this code was ifdef'd.
|
|
This is worth a 1.4x speedup on the slow path (when not histogramming).
|
|
- Debug mode should break the processor out of wfi
- wfi in debug mode should execute as a nop
|
|
|
|
This speeds up histogramming when logging is disabled, with almost
no slowdown for the logging case.
|
|
Speeds up fast path after unconditionally enabling histogram.
|
|
|
|
Fast variant should only be used when logging is disabled
|
|
|
|
|
|
|
|
|
|
chaining
This step is to ensure that removing config.h out of headers will not cause regressions.
|
|
Goal is to remove match_result_t.fire field to eliminate dont-care fields.
|
|
add module_t::trap_taking_match and trigger_t::trap_taking_match for
checking itrigger after taking traps
|
|
|
|
The number of digits indicates the size of accesses. A size-1 access
needs two digits instead of one.
|
|
The scheme was based on the notion that memory accesses are idempotent
up until the point the trigger would've been hit, which isn't true in
the case of side-effecting loads and data-value triggers.
Instead, check the trigger on the next instruction fetch. To keep the
perf overhead minimal, perform this check on the I$ refill path, and
ensure that path is taken by flushing the I$.
|
|
|
|
|
|
execute.cc, entropy_source.h and v_ext_macros.h
|
|
|
|
When WFI was changed to throw a C++ exception, the special-npc
signaling became obsolete.
|
|
Now that logic only affects ebreak instructions, and does not affect
triggers that also cause a trap to be taken.
Fixes #725. Although like Paul, I don't have a test for this case.
Introduce trap_debug_mode so so ebreak instructions can force entry into
debug mode.
|
|
This fix print x5 as "x5 ", instead of "x 5".
|
|
|
|
|
|
Created a new triggers::module_t to hold the structure.
Also make sure mcontrol_t instances are properly initialized.
|
|
These actions are not specific to the mcontrol trigger.
|
|
|
|
Before this change, the MCYCLE CSR was just a proxy for MINSTRET.
Similarly, CYCLE was a proxy for INSTRET. This models a machine where
every instruction takes exactly one cycle to execute.
That's not quite precise enough if you want to do cosimulation: there,
you're going to want to MCYCLE to actually match the behaviour of your
processor (because you need reads from the relevant CSRs to give the
expected result).
This commit splits the two CSRs, leaving the other proxy relationships
unchanged. The code in processor_t::step() which bumps MINSTRET now
bumps MCYCLE by the same amount, maintaining the previous behaviour.
Of course, now a cosimulation environment can update the value of
MCYCLE to fix things up for multi-cycle instructions after they run.
|
|
|
|
So I can fix breakpoints next to properly report gva.
|
|
Improves log because it now shows "trap_breakpoint" instead of "trap #3".
|
|
Adds commit log events for vl to many vector instructions.
|