From 5cfe070932ca3a50ab4e42835a991241cc42238c Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Wed, 20 Sep 2017 19:16:34 -0700 Subject: [PATCH] Add option to make misa read-only --- src/main/scala/rocket/CSR.scala | 3 ++- src/main/scala/rocket/RocketCore.scala | 1 + src/main/scala/tile/Core.scala | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/scala/rocket/CSR.scala b/src/main/scala/rocket/CSR.scala index 08e88cc1..421b41f7 100644 --- a/src/main/scala/rocket/CSR.scala +++ b/src/main/scala/rocket/CSR.scala @@ -606,7 +606,8 @@ class CSRFile(perfEventSets: EventSets = new EventSets(Seq()))(implicit p: Param when (decoded_addr(CSRs.misa)) { val mask = UInt(isaStringToMask(isaMaskString), xLen) val f = wdata('f' - 'a') - reg_misa := ~(~wdata | (!f << ('d' - 'a'))) & mask | reg_misa & ~mask + if (coreParams.misaWritable) + reg_misa := ~(~wdata | (!f << ('d' - 'a'))) & mask | reg_misa & ~mask } when (decoded_addr(CSRs.mip)) { // MIP should be modified based on the value in reg_mip, not the value diff --git a/src/main/scala/rocket/RocketCore.scala b/src/main/scala/rocket/RocketCore.scala index fa6ea5a8..f5c4b78f 100644 --- a/src/main/scala/rocket/RocketCore.scala +++ b/src/main/scala/rocket/RocketCore.scala @@ -24,6 +24,7 @@ case class RocketCoreParams( nPMPs: Int = 8, nPerfCounters: Int = 0, haveBasicCounters: Boolean = true, + misaWritable: Boolean = true, nL2TLBEntries: Int = 0, mtvecInit: Option[BigInt] = Some(BigInt(0)), mtvecWritable: Boolean = true, diff --git a/src/main/scala/tile/Core.scala b/src/main/scala/tile/Core.scala index 21b887af..a914d6ef 100644 --- a/src/main/scala/tile/Core.scala +++ b/src/main/scala/tile/Core.scala @@ -29,6 +29,7 @@ trait CoreParams { val nBreakpoints: Int val nPerfCounters: Int val haveBasicCounters: Boolean + val misaWritable: Boolean val nL2TLBEntries: Int val mtvecInit: Option[BigInt] val mtvecWritable: Boolean