diff options
author | Alec Roelke <ar4jc@virginia.edu> | 2018-02-18 22:28:44 -0500 |
---|---|---|
committer | Alec Roelke <alec.roelke@gmail.com> | 2018-07-28 18:48:30 +0000 |
commit | 76e7aec54256696dfdc9567c7ea325fb07c48ef1 (patch) | |
tree | a5e7ed299c1b2094bdae85f6d9ca017223dffdd8 /src/arch/riscv/isa/formats/standard.isa | |
parent | 2595fe6b2834fa0af15baf6f5ad4a8f523c838a6 (diff) | |
download | gem5-76e7aec54256696dfdc9567c7ea325fb07c48ef1.tar.xz |
arch-riscv: Add support for trap value register
RISC-V has a set of CSRs that contain information about a trap that was
taken into each privilegel level, such as illegal instruction bytes or
faulting address. This patch adds that register, modifies existing
faults to make use of it, and adds a new fault for future use with
handling page faults and bad addresses.
Change-Id: I3004bd7b907e7dc75e5f1a8452a1d74796a7a551
Reviewed-on: https://gem5-review.googlesource.com/11135
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>
Diffstat (limited to 'src/arch/riscv/isa/formats/standard.isa')
-rw-r--r-- | src/arch/riscv/isa/formats/standard.isa | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/arch/riscv/isa/formats/standard.isa b/src/arch/riscv/isa/formats/standard.isa index e69ad7ee5..e9539fe52 100644 --- a/src/arch/riscv/isa/formats/standard.isa +++ b/src/arch/riscv/isa/formats/standard.isa @@ -231,7 +231,7 @@ def template CSRExecute {{ olddata = xc->readMiscReg(CSRData.at(csr).physIndex); } else { std::string error = csprintf("Illegal CSR index %#x\n", csr); - fault = make_shared<IllegalInstFault>(error); + fault = make_shared<IllegalInstFault>(error, machInst); olddata = 0; } break; @@ -252,7 +252,7 @@ def template CSRExecute {{ if (bits(csr, 11, 10) == 0x3) { std::string error = csprintf("CSR %s is read-only\n", CSRData.at(csr).name); - fault = make_shared<IllegalInstFault>(error); + fault = make_shared<IllegalInstFault>(error, machInst); } else { DPRINTF(RiscvMisc, "Writing %#x to CSR %s.\n", data, CSRData.at(csr).name); |