Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2023-08-14 | rename *envcfg.HADE to *envcfg.ADUE | Ved Shanbhogue | 1 | -2/+2 | |
2023-07-13 | refactor: mcontrol/mcontrol6: extend check_triggers() with tval parameter | YenHaoChen | 1 | -3/+3 | |
2023-06-19 | mmu: support load/store longer than 64-bits. | Gianluca Guida | 1 | -2/+15 | |
2023-05-11 | Plumb in effective virtual bit to take_trigger_action() | rbuchner | 1 | -8/+8 | |
2023-05-11 | Add split_misaligned_access() to mem_access_info_t | rbuchner | 1 | -2/+2 | |
2023-05-11 | Pass mem_access_info_t into walk() | rbuchner | 1 | -3/+7 | |
2023-05-11 | Use access_info within store_slow_path rather than xlate_flags | Ryan Buchner | 1 | -1/+1 | |
2023-05-11 | Use access_info.effective_virt when failed mmio_store (i.e. device detects ↵ | rbuchner | 1 | -1/+1 | |
access fault) Fixes case 3 from https://github.com/riscv-software-src/riscv-isa-sim/issues/872 | |||||
2023-05-11 | Adjust store_slow_path_intrapage to recieve a mem_access_info_t as input | Ryan Buchner | 1 | -7/+9 | |
2023-05-11 | Use access_info within load_slow_path rather than xlate_flags | Ryan Buchner | 1 | -2/+2 | |
Fixes case 2 from https://github.com/riscv-software-src/riscv-isa-sim/issues/872 | |||||
2023-05-11 | Use access_info.effective_virt when failed mmio_load (i.e. device detects ↵ | rbuchner | 1 | -1/+1 | |
access fault) Fixes case 3 from https://github.com/riscv-software-src/riscv-isa-sim/issues/872 | |||||
2023-05-11 | Use access_info.effective_virt when access_fault due to non-reservable lr | rbuchner | 1 | -1/+1 | |
Fixes case 4 from https://github.com/riscv-software-src/riscv-isa-sim/issues/872 | |||||
2023-05-11 | Adjust load_slow_path_intrapage to recieve a mem_access_info_t as input | Ryan Buchner | 1 | -9/+11 | |
2023-05-11 | Add structure (mem_access_info_t) for holding memory access information | Ryan Buchner | 1 | -18/+10 | |
Add complementary function for generating access information. Update mmu_t::translate() to accept a mem_access_info_t. | |||||
2023-05-11 | Add is_special_access() to xlate_flags_t | rbuchner | 1 | -4/+4 | |
2023-05-11 | Add xlate_flags_t struct | rbuchner | 1 | -17/+17 | |
Use xlate_flags_t rather than XLATE_FLAGS preprocessing directives | |||||
2023-05-11 | Rename RISCV_XLATE_VIRT to RISCV_XLATE_FORCED_VIRT | Ryan Buchner | 1 | -3/+3 | |
More readable/understandable. | |||||
2023-03-16 | Make MPRV logic consistent; factor it out | Andrew Waterman | 1 | -2/+2 | |
I believe the fact that mmu_t::refill_tlb was ignoring debug mode was benign, but certainly paying attention to debug mode is OK. | |||||
2023-03-04 | Don't issue misaligned or non-power-of-2 MMIO accesses | Scott Johnson | 1 | -7/+24 | |
@aswaterman explains: Rather than requiring each MMIO device to support arbitrary sizes and alignments, decompose MMIO misaligned loads and stores in such a way as to guarantee their constituent parts are always aligned. (Specifically, they now always decompose to a sequence of one-byte accesses.) This is not a semantic change for main-memory accesses, but it is a semantic change for I/O devices. It makes them more realistic, in that most bus standards don't support non-power-of-2-sized accesses. | |||||
2023-01-27 | Use Svadu control bits to drive A/D updates | Aaron Durbin | 1 | -2/+4 | |
The Svadu (https://github.com/riscv/riscv-svadu) extension updates the A/D bits of PTEs: 1. In S/HS mode when menvcfg.hade=1 2. In G-stage page tables when menvcfg.hade=1 3. In VS mode when henvcfg.hade=1 To enable this behavior the 'svadu' ISA string is needed. This newly added behavior supplants the --mmu-dirty flag. However, that flag is not yet removed. | |||||
2023-01-04 | Respect --mmu-dirty flag instead of --enable-dirty | Jerry Zhao | 1 | -16/+18 | |
2023-01-03 | Respect --[no-]misaligned command-line flag | Andrew Waterman | 1 | -8/+6 | |
2023-01-03 | Merge pull request #1200 from riscv-software-src/mmio_pte | Andrew Waterman | 1 | -18/+5 | |
Support accessing PTEs through mmio_load/mmio_store | |||||
2023-01-03 | Pull pte load/store into methods of mmu_t | Jerry Zhao | 1 | -18/+5 | |
2023-01-03 | Add method to probe which memory regions are reservable | Jerry Zhao | 1 | -4/+9 | |
Default reservable regions is the same as before | |||||
2023-01-03 | Specify addresses are physical for simif_t member functions | Jerry Zhao | 1 | -11/+11 | |
2022-12-23 | Add mmio_fetch to simif_t to distinguish between fetch/load for mmio accesses | Jerry Zhao | 1 | -1/+9 | |
2022-12-15 | Add config.h includes directly to source files instead of relying on header ↵ | Jerry Zhao | 1 | -0/+1 | |
chaining This step is to ensure that removing config.h out of headers will not cause regressions. | |||||
2022-12-15 | Rename memif_endianness_t to endianness_t | Jerry Zhao | 1 | -3/+3 | |
2022-12-01 | Convert triggers::module_t::detect_memory_access_match to std::optional | Scott Johnson | 1 | -5/+5 | |
Goal is to remove match_result_t.fire field to eliminate dont-care fields when fire=false. | |||||
2022-12-01 | triggers: refactor: rename memory_access_match() to detect_memory_access_match() | YenHaoChen | 1 | -1/+1 | |
2022-11-30 | triggers: refactor: let action be part of match_result_t | YenHaoChen | 1 | -4/+3 | |
2022-11-30 | triggers: refactor: let match_result_t be a struct with fire and timing ↵ | YenHaoChen | 1 | -14/+11 | |
variables Mapping of previous and revised match_result_t data type: ------------------------------------------- Previous Revised MATCH_NONE fire=false (don't care timing) MATCH_MATCH_FIRE_BEFORE fire=true,timing=TIMING_BEFORE MATCH_MATCH_FIRE_AFTER fire=true,timing=TIMING_AFTER | |||||
2022-10-25 | Remove set_target_endianness | add --big-endian flag | Jerry Zhao | 1 | -2/+5 | |
Set target endianess in constructors | |||||
2022-10-19 | Remove require_alignment flag from loads | Andrew Waterman | 1 | -2/+2 | |
The last remaining use was LR, which we can identify through other means. | |||||
2022-10-19 | Fix imprecise exception on LR to MMIO space | Andrew Waterman | 1 | -1/+5 | |
The old implementation performed the load before checking whether the memory region was valid for LR. So, for LR to MMIO, we would action side effects before raising the exception, which is not precise. | |||||
2022-10-19 | do memcpy only for actually_store in store_slow_path_intrapage | Weiwei Li | 1 | -2/+4 | |
2022-10-14 | In triggers, use optional<data> instead of {has_data, data} | Andrew Waterman | 1 | -7/+7 | |
2022-10-13 | Remove unused field matched_t::data | Andrew Waterman | 1 | -2/+2 | |
2022-10-06 | Don't use reexecution as the means to implement trigger-after | Andrew Waterman | 1 | -1/+4 | |
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$. | |||||
2022-10-06 | Fix endianness bug in fetch triggers | Andrew Waterman | 1 | -2/+1 | |
Instruction fetch is always little-endian. | |||||
2022-10-06 | DRY in checking triggers | Andrew Waterman | 1 | -26/+27 | |
2022-10-06 | Move uncommon-case fetch functionality into fetch_slow_path | Andrew Waterman | 1 | -8/+24 | |
2022-10-06 | Move all uncommon-case store functionality into store_slow_path | Andrew Waterman | 1 | -8/+35 | |
As a side effect, misaligned stores now behave the same as aligned stores with respect to triggers: only the first byte is checked. | |||||
2022-10-06 | Move all uncommon-case load functionality into load_slow_path | Andrew Waterman | 1 | -5/+32 | |
As a side effect, misaligned loads now behave the same as aligned loads with respect to triggers: only the first byte is checked. | |||||
2022-10-05 | Remove unused variable to fix build | Andrew Waterman | 1 | -1/+0 | |
2022-10-05 | Merge pull request #1105 from YenHaoChen/pr-trigger-priority | Andrew Waterman | 1 | -8/+17 | |
Fix trigger priority | |||||
2022-10-04 | Suppress most unused variable warnings | Andrew Waterman | 1 | -1/+1 | |
2022-09-30 | Check trigger only with actually_store | YenHaoChen | 1 | -5/+7 | |
The data value of the function store_slow_path() is meaningful only when the actually_store=true. Otherwise, the data value is a hollow value of 0, which may result in unintended trigger matching. | |||||
2022-09-30 | Fix priority of mcontrol trigger store address/data before | YenHaoChen | 1 | -2/+2 | |
The spec defines that the mcontrol store address/data has a higher priority over page fault and address misalignment (Debug spec, Table 5.2). Thus, the trigger checking should be before the translation and alignment checking. The previous implementation checks the trigger after the translation and alignment, resulting in incorrect priority. For instance, when page fault and trigger occur on the same instruction, the previous implementation will choose to raise the page fault, which contradicts the priority requirement. This commit moves the trigger checking before the misaligned checking and translation. The trigger will fire on the instruction instead of the page fault in the above case. |