No public description

PiperOrigin-RevId: 596713847
diff --git a/WORKSPACE b/WORKSPACE
index 840e641..3e2833e 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -6,17 +6,17 @@
 # MPACT-RiscV repo
 http_archive(
     name = "com_google_mpact-riscv",
-    sha256 = "76e2b701cb93abaebbdd0fa43771cee20db84ca6eb5140f12f7c873d4743a9ac",
-    strip_prefix = "mpact-riscv-e33928ebc238f4dd526719ee398869ef8c353b53",
-    url = "https://github.com/google/mpact-riscv/archive/e33928ebc238f4dd526719ee398869ef8c353b53.tar.gz",
+    sha256 = "2f51e0d90f6adf639fe6b23bee6dd86283326d86f8952e60cb26abeccc1e939b",
+    strip_prefix = "mpact-riscv-641f0748c6b17aa8789d455e82fb8f1296f79d26",
+    url = "https://github.com/google/mpact-riscv/archive/641f0748c6b17aa8789d455e82fb8f1296f79d26.tar.gz",
 )
 
 # MPACT-Sim repo
 http_archive(
     name = "com_google_mpact-sim",
-    sha256 = "f6e97fad35d9e218e4f9e0e8737ba0f5163e24393f502b47ca7fc5a9a7924d20",
-    strip_prefix = "mpact-sim-7ea1334bedf7f6f4a58aa3b2636e9613d8704f39",
-    url = "https://github.com/google/mpact-sim/archive/7ea1334bedf7f6f4a58aa3b2636e9613d8704f39.tar.gz",
+    sha256 = "f39cbbe26df267a6d0bd64756e46c8606d08b3f78cb407e3943862f79237bbf8",
+    strip_prefix = "mpact-sim-0b5f0d18c69434e63f0ca20465067b5ef61f5046",
+    url = "https://github.com/google/mpact-sim/archive/0b5f0d18c69434e63f0ca20465067b5ef61f5046.tar.gz",
 )
 
 load("@com_google_mpact-sim//:repos.bzl", "mpact_sim_repos")
diff --git a/sim/kelvin_state.cc b/sim/kelvin_state.cc
index 68e017c..62b92f2 100644
--- a/sim/kelvin_state.cc
+++ b/sim/kelvin_state.cc
@@ -31,6 +31,10 @@
 namespace kelvin::sim {
 
 using ::mpact::sim::riscv::RiscVCsrEnum;
+using ::mpact::sim::riscv::RiscVCsrInterface;
+
+// The misa implementation uses only the 64-bit variant.
+constexpr uint64_t kKelvinMisaVal = 0x4000000000801100;
 
 enum class KelvinCsrEnum {
   kKIsa = 0xFC0,
@@ -50,7 +54,14 @@
   }
   if (!csr_set()->AddCsr(&kisa_).ok()) {
     LOG(FATAL) << "Failed to register kisa";
-  };
+  }
+
+  absl::StatusOr<RiscVCsrInterface *> result = csr_set()->GetCsr("misa");
+  if (!result.ok()) {
+    LOG(FATAL) << "Failed to get misa";
+  }
+  auto *misa = *result;
+  misa->Set(kKelvinMisaVal);
 }
 
 KelvinState::KelvinState(absl::string_view id,
diff --git a/sim/test/kelvin_top_test.cc b/sim/test/kelvin_top_test.cc
index 39c5c85..b4883d7 100644
--- a/sim/test/kelvin_top_test.cc
+++ b/sim/test/kelvin_top_test.cc
@@ -449,6 +449,15 @@
   for (auto name : {"kisa"}) {
     EXPECT_OK(kelvin_top_->ReadRegister(name));
   }
+
+  // CSRs that diverge from stock values in MPACT.
+  constexpr uint32_t kMisaValue = 0x40801100;
+  for (auto &[name, expected_value] :
+       {std::tuple<std::string, uint32_t>{"misa", kMisaValue}}) {
+    auto result = kelvin_top_->ReadRegister(name);
+    EXPECT_OK(result.status());
+    EXPECT_EQ(result.value(), expected_value);
+  }
 }
 
 TEST_F(KelvinTopTest, RunKelvinVectorProgram) {