diff options
Diffstat (limited to 'src/arch/riscv/faults.cc')
-rw-r--r-- | src/arch/riscv/faults.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/arch/riscv/faults.cc b/src/arch/riscv/faults.cc index b5f3d078b..a151334c4 100644 --- a/src/arch/riscv/faults.cc +++ b/src/arch/riscv/faults.cc @@ -131,6 +131,13 @@ void Reset::invoke(ThreadContext *tc, const StaticInstPtr &inst) tc->clearArchRegs(); } + tc->setMiscReg(MISCREG_PRV, PRV_M); + STATUS status = tc->readMiscReg(MISCREG_STATUS); + status.mie = 0; + status.mprv = 0; + tc->setMiscReg(MISCREG_STATUS, status); + tc->setMiscReg(MISCREG_MCAUSE, 0); + // Advance the PC to the implementation-defined reset vector PCState pc = static_cast<RiscvSystem *>(tc->getSystemPtr())->resetVect(); tc->pcState(pc); |