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

Reply via email to