Nils Asmussen has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/25652 )
Change subject: arch-riscv: fault on mstatus accesses from lower privilege
modes.
......................................................................
arch-riscv: fault on mstatus accesses from lower privilege modes.
Change-Id: If2e35445770eaa52f5af6f9ef02fb5e11bef8da4
---
M src/arch/riscv/isa/formats/standard.isa
1 file changed, 13 insertions(+), 0 deletions(-)
diff --git a/src/arch/riscv/isa/formats/standard.isa
b/src/arch/riscv/isa/formats/standard.isa
index a6c6e1c..7ec9484 100644
--- a/src/arch/riscv/isa/formats/standard.isa
+++ b/src/arch/riscv/isa/formats/standard.isa
@@ -2,6 +2,7 @@
// Copyright (c) 2015 RISC-V Foundation
// Copyright (c) 2016-2017 The University of Virginia
+// Copyright (c) 2020 Barkhausen Institut
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -304,6 +305,18 @@
olddata = xc->readMiscReg(MISCREG_FFLAGS) |
(xc->readMiscReg(MISCREG_FRM) << FRM_OFFSET);
break;
+ case CSR_MSTATUS: {
+ auto pm = (PrivilegeMode)xc->readMiscReg(MISCREG_PRV);
+ if (pm != PrivilegeMode::PRV_M) {
+ std::string error = csprintf(
+ "MSTATUS is only accessibly in machine mode\n");
+ fault = make_shared<IllegalInstFault>(error, machInst);
+ olddata = 0;
+ }
+ else
+ olddata = xc->readMiscReg(CSRData.at(csr).physIndex);
+ break;
+ }
default:
if (CSRData.find(csr) != CSRData.end()) {
olddata = xc->readMiscReg(CSRData.at(csr).physIndex);
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/25652
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: If2e35445770eaa52f5af6f9ef02fb5e11bef8da4
Gerrit-Change-Number: 25652
Gerrit-PatchSet: 1
Gerrit-Owner: Nils Asmussen <nils.asmus...@barkhauseninstitut.org>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev