Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
add support for sscofpmf extension v0.5.2
|
|
The current spike implementation does not include the ILEN (maximum
instruction length supported by the implementation), which is required
to constrain the value of tval on an illegal instruction exception.
Consider an implementation supporting only an RV64I base instruction
set. The ILEN is 32 bits (spec sec. 1.5), and the MXLEN is 64 bits (spec
sec. 5.1). Under an illegal instruction exception with the instruction
longer than the ILEN, the mtval should contain the first ILEN (32 bits)
of the faulting instruction. However, the current spike implementation
lets the mtval be the instruction's first MXLEN (64 bits).
To fix this bug, this PR masks out the upper bits of the tval and leaves
the first ILEN bits of the faulting instruction. When this PR is being
made, all official instructions are either 16 or 32 bits. So, We hard-
code the ILEN to 32 bits.
|
|
Two writes to vtype will be logged in commitlog if vill is true
|
|
execute.cc, entropy_source.h and v_ext_macros.h
|
|
|
|
since spike doesn't truly support counting of hardware performance events,
only csr related read/write functions is supported currently
|
|
add stateen related check to frm/fflags
|
|
|
|
|
|
Update for counter related CSR
|
|
|
|
|
|
- If U-mode is not supported, then registers menvcfg and menvcfgh do not exist
- Since H extension requires S-mode, and S mode can not exsit without U-mode,
so senvcfg, henvcfg/henvcfgh also do not exist if U-mode is not supported
|
|
|
|
|
|
These have never been logged properly.
|
|
Otherwise they will have the same problem as #1044
|
|
Use this for mstatus on RV32 so that `csrw mstatus` does not modify
the bits in `mstatush`. Fixes #1044.
|
|
|
|
Mask in underlying CSR is sufficient.
Mask field in rv32_high_csr_t is now unneeded and will be removed next.
|
|
|
|
|
|
|
|
No longer needed, since they are no longer sign-extended.
Fixes #1022 by eliminating undefined behavior (64-bit instructions
resulted in a shift amount equal to the datatype width).
|
|
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.
|
|
Simplify decode_insn and insn_desc_t
|
|
Fixes bug introduced in 5b7cdbe1cf75112bd2a472b7490b15fa7078d798
|
|
|
|
The field is rendered unnecessary by 11f5942b7d8211e61b5ad9259d118033692c0759.
Undoes some changes from 750f008e723bb3b20cec41a47ed5cec549447665.
|
|
These add to the length of the instruction list without providing
an apparent benefit.
|
|
Also make PBMTE set on reset for backward compatibility.
Since before Spike proceeded as if these bits were set if the extension was enabled.
|
|
To do so implemented henvcfg_csr_t.
henvcfg.PBMTE will be read only 0 if menvcfg.PBMTE = 0.
|
|
|
|
* add DECLARE_OVERLAP_INSN to bind instructions with extension
* add overlap_list.h to contain the declare of all overlapping instructions
* make func function for overlapping instruction return NULL when the coresponding
extension(s) is not supported.
|
|
|
|
Before, it had another copy, which is a little unnecessary.
|
|
Refactor trigger code
|
|
Rename processor_t::set_csr to put_csr to fix build on RISC-V
|
|
The alternative would be to #undef set_csr after including encoding.h,
but this solution strikes me as cleaner. Part of the reason is that
set_csr was not a great name: it sounds like it implements the CSRRS
(read & set) instruction, rather than impelementing a simple write.
|
|
|
|
The change makes [v]satp.asid and hgatp.vmid writtable and supports
maximum length for rv32 and rv64. Software could write and read the
satp.asid to get the valid length or check if the core supports
asid/vmid or not. However, there is no official way to describe this hardware
capability (device tree or something else). Two implementation flags
are also added for future use and enabled by default.
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
|
|
Not just mcontrol_t.
|
|
|
|
|
|
|
|
|
|
|
|
Created a new triggers::module_t to hold the structure.
Also make sure mcontrol_t instances are properly initialized.
|