No public description PiperOrigin-RevId: 981163701
diff --git a/riscv/riscv_state.cc b/riscv/riscv_state.cc index 69465e8..fd488c7 100644 --- a/riscv/riscv_state.cc +++ b/riscv/riscv_state.cc
@@ -71,6 +71,8 @@ static constexpr T kMEdelegWMask = 0x0000'b3ff; static constexpr T kMIdelegRMask = 0x0bbb; static constexpr T kMIdelegWMask = 0x0bbb; + static constexpr T kSatpRMask = std::numeric_limits<T>::max(); + static constexpr T kSatpWMask = 0; }; template <> @@ -97,6 +99,8 @@ static constexpr T kMEdelegWMask = 0x0000'0000'0000'b3ffULL; static constexpr T kMIdelegRMask = 0x0bbb; static constexpr T kMIdelegWMask = 0x0bbb; + static constexpr T kSatpRMask = std::numeric_limits<T>::max(); + static constexpr T kSatpWMask = 0; }; // Three templated helper functions used to create individual CSRs. @@ -405,6 +409,12 @@ CsrInfo<T>::kMIdelegWMask, state), nullptr); + // satp - supervisor address translation and protection register. + CHECK_NE(CreateCsr<RiscVSimpleCsr<T>>( + state, csr_vec, "satp", RiscVCsrEnum::kSAtp, 0, + CsrInfo<T>::kSatpRMask, CsrInfo<T>::kSatpWMask, state), + nullptr); + // User level CSRs // ustatus