udb 0.1.9 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +5 -2
  3. data/.data/cfgs/mc100-32-full-example.yaml +1 -0
  4. data/.data/cfgs/profile/README.adoc +10 -0
  5. data/.data/cfgs/profile/RVA20S64.yaml +26 -6
  6. data/.data/cfgs/profile/RVA20U64.yaml +18 -4
  7. data/.data/cfgs/profile/RVA22S64.yaml +27 -7
  8. data/.data/cfgs/profile/RVA22U64.yaml +18 -4
  9. data/.data/cfgs/profile/RVA23S64.yaml +61 -7
  10. data/.data/cfgs/profile/RVA23U64.yaml +36 -4
  11. data/.data/cfgs/profile/RVB23S64.yaml +27 -7
  12. data/.data/cfgs/profile/RVB23U64.yaml +18 -4
  13. data/.data/cfgs/profile/RVI20U32.yaml +10 -4
  14. data/.data/cfgs/profile/RVI20U64.yaml +10 -4
  15. data/.data/cfgs/qc_iu.yaml +4 -1
  16. data/.data/cfgs/rv32-riscv-tests.yaml +2 -1
  17. data/.data/cfgs/rv32-vector.yaml +2 -1
  18. data/.data/cfgs/rv64-riscv-tests.yaml +2 -1
  19. data/.data/cfgs/rv64-vector.yaml +2 -1
  20. data/.data/spec/custom/isa/qc_iu/csr/Smrnmi/mnepc.yaml +17 -0
  21. data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itba.yaml +45 -0
  22. data/.data/spec/custom/isa/qc_iu/csr/Xqccmi/qc.itdec.yaml +39 -0
  23. data/.data/spec/custom/isa/qc_iu/csr/jvt.yaml +11 -0
  24. data/.data/spec/custom/isa/qc_iu/csr/mepc.yaml +16 -0
  25. data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +219 -0
  26. data/.data/spec/custom/isa/qc_iu/ext/Xqccmt.yaml +127 -0
  27. data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +153 -0
  28. data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jalt.yaml +84 -0
  29. data/.data/spec/custom/isa/qc_iu/inst/Xqccmt/qc.cm.jt.yaml +60 -0
  30. data/.data/spec/custom/isa/qc_iu/isa/globals.isa +112 -0
  31. data/.data/spec/schemas/config_schema.json +219 -26
  32. data/.data/spec/schemas/csr_schema.json +0 -6
  33. data/.data/spec/schemas/ext_schema.json +80 -24
  34. data/.data/spec/schemas/inst_schema.json +0 -3
  35. data/.data/spec/schemas/profile_release_schema.json +1 -1
  36. data/.data/spec/schemas/profile_schema.json +0 -3
  37. data/.data/spec/schemas/register_file_schema.json +8 -3
  38. data/.data/spec/schemas/schema_defs.json +8 -27
  39. data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +8 -8
  40. data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +4 -4
  41. data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +8 -8
  42. data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +4 -4
  43. data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +8 -8
  44. data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +4 -4
  45. data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +8 -8
  46. data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +4 -4
  47. data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +8 -8
  48. data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +4 -4
  49. data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +8 -8
  50. data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +4 -4
  51. data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +8 -8
  52. data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +4 -4
  53. data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +8 -8
  54. data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +4 -4
  55. data/.data/spec/std/isa/csr/I/pmpcfgN.layout +1 -1
  56. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.layout +6 -2
  57. data/.data/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +6 -2
  58. data/.data/spec/std/isa/csr/hstatus.yaml +16 -0
  59. data/.data/spec/std/isa/csr/mcycleh.yaml +1 -1
  60. data/.data/spec/std/isa/csr/misa.yaml +0 -12
  61. data/.data/spec/std/isa/csr/mstatus.yaml +38 -0
  62. data/.data/spec/std/isa/csr/mstatush.yaml +17 -15
  63. data/.data/spec/std/isa/csr/senvcfg.yaml +16 -0
  64. data/.data/spec/std/isa/csr/sstatus.yaml +12 -0
  65. data/.data/spec/std/isa/csr/vsstatus.yaml +24 -0
  66. data/.data/spec/std/isa/ext/A.yaml +5 -7
  67. data/.data/spec/std/isa/ext/S.yaml +12 -0
  68. data/.data/spec/std/isa/ext/Smpmpmt.yaml +52 -0
  69. data/.data/spec/std/isa/ext/Sv32.yaml +7 -19
  70. data/.data/spec/std/isa/ext/Sv39.yaml +7 -19
  71. data/.data/spec/std/isa/ext/Sv48.yaml +4 -20
  72. data/.data/spec/std/isa/ext/Sv57.yaml +4 -20
  73. data/.data/spec/std/isa/ext/Svukte.yaml +71 -0
  74. data/.data/spec/std/isa/ext/Zawrs.yaml +1 -1
  75. data/.data/spec/std/isa/ext/Zihpm.yaml +0 -12
  76. data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
  77. data/.data/spec/std/isa/inst/C/c.addi16sp.yaml +1 -0
  78. data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
  79. data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
  80. data/.data/spec/std/isa/inst/C/c.ldsp.yaml +1 -1
  81. data/.data/spec/std/isa/inst/C/c.li.yaml +1 -0
  82. data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
  83. data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -1
  84. data/.data/spec/std/isa/inst/C/c.sdsp.yaml +1 -1
  85. data/.data/spec/std/isa/inst/D/fsgnj.d.yaml +3 -0
  86. data/.data/spec/std/isa/inst/D/fsgnjn.d.yaml +3 -0
  87. data/.data/spec/std/isa/inst/D/fsgnjx.d.yaml +3 -0
  88. data/.data/spec/std/isa/inst/F/fadd.s.yaml +5 -5
  89. data/.data/spec/std/isa/inst/F/fclass.s.yaml +2 -2
  90. data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
  91. data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
  92. data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
  93. data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
  94. data/.data/spec/std/isa/inst/F/fcvt.s.w.yaml +1 -1
  95. data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
  96. data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
  97. data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
  98. data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
  99. data/.data/spec/std/isa/inst/F/feq.s.yaml +2 -2
  100. data/.data/spec/std/isa/inst/F/fle.s.yaml +2 -2
  101. data/.data/spec/std/isa/inst/F/fleq.s.yaml +2 -2
  102. data/.data/spec/std/isa/inst/F/flt.s.yaml +2 -2
  103. data/.data/spec/std/isa/inst/F/fltq.s.yaml +2 -2
  104. data/.data/spec/std/isa/inst/F/flw.yaml +2 -2
  105. data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
  106. data/.data/spec/std/isa/inst/F/fmax.s.yaml +6 -6
  107. data/.data/spec/std/isa/inst/F/fmin.s.yaml +6 -6
  108. data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
  109. data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
  110. data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +2 -2
  111. data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
  112. data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +2 -2
  113. data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
  114. data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +4 -4
  115. data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +3 -3
  116. data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +4 -4
  117. data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
  118. data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
  119. data/.data/spec/std/isa/inst/F/fsw.yaml +1 -1
  120. data/.data/spec/std/isa/inst/I/addi.yaml +1 -1
  121. data/.data/spec/std/isa/inst/I/addiw.yaml +1 -1
  122. data/.data/spec/std/isa/inst/I/andi.yaml +1 -1
  123. data/.data/spec/std/isa/inst/I/beq.yaml +1 -1
  124. data/.data/spec/std/isa/inst/I/bge.yaml +4 -2
  125. data/.data/spec/std/isa/inst/I/bgeu.yaml +3 -0
  126. data/.data/spec/std/isa/inst/I/blt.yaml +4 -2
  127. data/.data/spec/std/isa/inst/I/bltu.yaml +3 -0
  128. data/.data/spec/std/isa/inst/I/bne.yaml +1 -1
  129. data/.data/spec/std/isa/inst/I/slt.yaml +2 -2
  130. data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -1
  131. data/.data/spec/std/isa/inst/I/sltu.yaml +1 -1
  132. data/.data/spec/std/isa/inst/I/sub.yaml +1 -1
  133. data/.data/spec/std/isa/inst/I/subw.yaml +1 -1
  134. data/.data/spec/std/isa/inst/I/xori.yaml +1 -1
  135. data/.data/spec/std/isa/inst/M/mul.yaml +0 -19
  136. data/.data/spec/std/isa/inst/Q/fsgnj.q.yaml +1 -1
  137. data/.data/spec/std/isa/inst/S/sret.yaml +3 -1
  138. data/.data/spec/std/isa/inst/V/vadd.vv.yaml +1 -5
  139. data/.data/spec/std/isa/inst/V/vfsgnjn.vv.yaml +3 -0
  140. data/.data/spec/std/isa/inst/V/vfsgnjx.vv.yaml +3 -0
  141. data/.data/spec/std/isa/inst/V/vl1re8.v.yaml +3 -0
  142. data/.data/spec/std/isa/inst/V/vl2re8.v.yaml +3 -0
  143. data/.data/spec/std/isa/inst/V/vl4re8.v.yaml +3 -0
  144. data/.data/spec/std/isa/inst/V/vl8re8.v.yaml +3 -0
  145. data/.data/spec/std/isa/inst/V/vle8.v.yaml +3 -8
  146. data/.data/spec/std/isa/inst/V/vmand.mm.yaml +3 -0
  147. data/.data/spec/std/isa/inst/V/vmfle.vv.yaml +3 -0
  148. data/.data/spec/std/isa/inst/V/vmflt.vv.yaml +3 -0
  149. data/.data/spec/std/isa/inst/V/vmnand.mm.yaml +3 -0
  150. data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +3 -0
  151. data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +3 -0
  152. data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +3 -0
  153. data/.data/spec/std/isa/inst/V/vmsle.vv.yaml +3 -0
  154. data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +3 -0
  155. data/.data/spec/std/isa/inst/V/vmsleu.vv.yaml +3 -0
  156. data/.data/spec/std/isa/inst/V/vmslt.vv.yaml +3 -0
  157. data/.data/spec/std/isa/inst/V/vmsltu.vv.yaml +3 -0
  158. data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +2 -13
  159. data/.data/spec/std/isa/inst/V/vmv.x.s.yaml +1 -1
  160. data/.data/spec/std/isa/inst/V/vmxnor.mm.yaml +3 -0
  161. data/.data/spec/std/isa/inst/V/vmxor.mm.yaml +3 -0
  162. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +3 -0
  163. data/.data/spec/std/isa/inst/V/vrsub.vx.yaml +3 -0
  164. data/.data/spec/std/isa/inst/V/vse8.v.yaml +3 -4
  165. data/.data/spec/std/isa/inst/V/vwadd.vx.yaml +3 -0
  166. data/.data/spec/std/isa/inst/V/vwaddu.vx.yaml +3 -0
  167. data/.data/spec/std/isa/inst/V/vxor.vi.yaml +4 -0
  168. data/.data/spec/std/isa/inst/Zalasr/lSIZE.AQRL.layout +40 -5
  169. data/.data/spec/std/isa/inst/Zalasr/lb.aq.yaml +17 -1
  170. data/.data/spec/std/isa/inst/Zalasr/lb.aqrl.yaml +17 -1
  171. data/.data/spec/std/isa/inst/Zalasr/ld.aq.yaml +17 -1
  172. data/.data/spec/std/isa/inst/Zalasr/ld.aqrl.yaml +17 -1
  173. data/.data/spec/std/isa/inst/Zalasr/lh.aq.yaml +17 -1
  174. data/.data/spec/std/isa/inst/Zalasr/lh.aqrl.yaml +17 -1
  175. data/.data/spec/std/isa/inst/Zalasr/lw.aq.yaml +17 -1
  176. data/.data/spec/std/isa/inst/Zalasr/lw.aqrl.yaml +17 -1
  177. data/.data/spec/std/isa/inst/Zalasr/sSIZE.AQRL.layout +46 -5
  178. data/.data/spec/std/isa/inst/Zalasr/sb.aqrl.yaml +16 -1
  179. data/.data/spec/std/isa/inst/Zalasr/sb.rl.yaml +16 -1
  180. data/.data/spec/std/isa/inst/Zalasr/sd.aqrl.yaml +16 -1
  181. data/.data/spec/std/isa/inst/Zalasr/sd.rl.yaml +16 -1
  182. data/.data/spec/std/isa/inst/Zalasr/sh.aqrl.yaml +16 -1
  183. data/.data/spec/std/isa/inst/Zalasr/sh.rl.yaml +16 -1
  184. data/.data/spec/std/isa/inst/Zalasr/sw.aqrl.yaml +16 -1
  185. data/.data/spec/std/isa/inst/Zalasr/sw.rl.yaml +16 -1
  186. data/.data/spec/std/isa/inst/Zbkb/packw.yaml +1 -1
  187. data/.data/spec/std/isa/inst/Zcd/c.fld.yaml +1 -1
  188. data/.data/spec/std/isa/inst/Zcd/c.fldsp.yaml +1 -1
  189. data/.data/spec/std/isa/inst/Zcd/c.fsdsp.yaml +1 -1
  190. data/.data/spec/std/isa/inst/Zcf/c.flwsp.yaml +1 -1
  191. data/.data/spec/std/isa/inst/Zcf/c.fswsp.yaml +1 -1
  192. data/.data/spec/std/isa/inst/Zcmp/cm.pop.yaml +1 -1
  193. data/.data/spec/std/isa/inst/Zcmp/cm.popret.yaml +1 -1
  194. data/.data/spec/std/isa/inst/Zcmp/cm.popretz.yaml +1 -1
  195. data/.data/spec/std/isa/inst/Zcmp/cm.push.yaml +2 -3
  196. data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
  197. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +6 -6
  198. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +5 -5
  199. data/.data/spec/std/isa/inst/Zfh/flh.yaml +1 -1
  200. data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +1 -1
  201. data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +1 -1
  202. data/.data/spec/std/isa/inst/Zfh/fsh.yaml +1 -1
  203. data/.data/spec/std/isa/inst/Zicsr/csrrc.yaml +1 -1
  204. data/.data/spec/std/isa/inst/Zicsr/csrrci.yaml +1 -1
  205. data/.data/spec/std/isa/inst/Zicsr/csrrs.yaml +2 -2
  206. data/.data/spec/std/isa/inst/Zicsr/csrrsi.yaml +1 -1
  207. data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +1 -1
  208. data/.data/spec/std/isa/inst/Zicsr/csrrwi.yaml +1 -1
  209. data/.data/spec/std/isa/isa/builtin_functions.idl +17 -0
  210. data/.data/spec/std/isa/isa/fp.idl +1 -5
  211. data/.data/spec/std/isa/isa/globals.isa +45 -14
  212. data/.data/spec/std/isa/isa/vec.idl +1 -2
  213. data/.data/spec/std/isa/manual_version/isa/20240411/isa_20240411.yaml +5 -5
  214. data/.data/spec/std/isa/param/COUNTINHIBIT_EN.yaml +8 -2
  215. data/.data/spec/std/isa/param/JVT_BASE_MASK.yaml +1 -1
  216. data/.data/spec/std/isa/param/MCOUNTINHIBIT_IMPLEMENTED.yaml +25 -0
  217. data/.data/spec/std/isa/param/MTVEC_MODES.yaml +10 -3
  218. data/.data/spec/std/isa/param/VLEN.yaml +2 -0
  219. data/.data/spec/std/isa/profile/RVA20S64.yaml +11 -4
  220. data/.data/spec/std/isa/profile/RVA20U64.yaml +14 -5
  221. data/.data/spec/std/isa/profile/RVA22S64.yaml +14 -3
  222. data/.data/spec/std/isa/profile/RVA22U64.yaml +8 -1
  223. data/.data/spec/std/isa/profile/RVA23S64.yaml +13 -0
  224. data/.data/spec/std/isa/profile/RVA23U64.yaml +15 -1
  225. data/.data/spec/std/isa/profile/RVB23S64.yaml +15 -3
  226. data/.data/spec/std/isa/profile/RVB23U64.yaml +8 -1
  227. data/.data/spec/std/isa/profile/RVI20U32.yaml +8 -1
  228. data/.data/spec/std/isa/profile/RVI20U64.yaml +7 -0
  229. data/.data/spec/std/isa/register_file/F.yaml +3 -2
  230. data/.data/spec/std/isa/register_file/V.yaml +2 -2
  231. data/.data/spec/std/isa/register_file/X.yaml +2 -1
  232. data/lib/udb/architecture.rb +4 -25
  233. data/lib/udb/cfg_arch.rb +171 -59
  234. data/lib/udb/cli.rb +10 -1
  235. data/lib/udb/condition.rb +38 -37
  236. data/lib/udb/config.rb +72 -6
  237. data/lib/udb/logic.rb +29 -56
  238. data/lib/udb/obj/csr.rb +23 -5
  239. data/lib/udb/obj/csr_field.rb +36 -21
  240. data/lib/udb/obj/database_obj.rb +2 -5
  241. data/lib/udb/obj/extension.rb +0 -3
  242. data/lib/udb/obj/instruction.rb +1 -4
  243. data/lib/udb/obj/portfolio.rb +75 -20
  244. data/lib/udb/obj/profile.rb +0 -4
  245. data/lib/udb/obj/register_file.rb +63 -2
  246. data/lib/udb/portfolio_design.rb +3 -6
  247. data/lib/udb/resolver.rb +84 -23
  248. data/lib/udb/version.rb +1 -1
  249. data/lib/udb/version_spec.rb +8 -0
  250. data/lib/udb/z3.rb +23 -0
  251. data/lib/udb.rb +0 -3
  252. metadata +25 -37
  253. data/.data/cfgs/profile/RVA23M64.yaml +0 -159
  254. data/.data/cfgs/profile/RVB23M64.yaml +0 -149
  255. data/.data/spec/schemas/proc_cert_class_schema.json +0 -35
  256. data/.data/spec/schemas/proc_cert_model_schema.json +0 -336
  257. data/.data/spec/std/isa/proc_cert_class/AC.yaml +0 -13
  258. data/.data/spec/std/isa/proc_cert_class/MC.yaml +0 -13
  259. data/.data/spec/std/isa/proc_cert_class/RVI.yaml +0 -16
  260. data/.data/spec/std/isa/proc_cert_model/AC100.yaml +0 -72
  261. data/.data/spec/std/isa/proc_cert_model/AC200.yaml +0 -58
  262. data/.data/spec/std/isa/proc_cert_model/MC100-32.yaml +0 -155
  263. data/.data/spec/std/isa/proc_cert_model/MC100-64.yaml +0 -21
  264. data/.data/spec/std/isa/proc_cert_model/MC200-32.yaml +0 -60
  265. data/.data/spec/std/isa/proc_cert_model/MC200-64.yaml +0 -21
  266. data/.data/spec/std/isa/proc_cert_model/MC300-32.yaml +0 -40
  267. data/.data/spec/std/isa/proc_cert_model/MC300-64.yaml +0 -21
  268. data/.data/spec/std/isa/proc_cert_model/RVI20-32.yaml +0 -39
  269. data/.data/spec/std/isa/proc_cert_model/RVI20-64.yaml +0 -19
  270. data/.data/spec/std/isa/profile/RVA23M64.yaml +0 -24
  271. data/.data/spec/std/isa/profile/RVB23M64.yaml +0 -86
  272. data/lib/udb/cert_normative_rule.rb +0 -41
  273. data/lib/udb/obj/certifiable_obj.rb +0 -21
  274. data/lib/udb/obj/certificate.rb +0 -230
  275. data/lib/udb/proc_cert_design.rb +0 -77
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -35,7 +35,7 @@ fields:
35
35
  ! Name ! Location ! Description
36
36
 
37
37
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
38
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
38
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
39
39
  h! A ! 4:3
40
40
  a! Address matching mode. One of:
41
41
 
@@ -93,7 +93,7 @@ fields:
93
93
  ! Name ! Location ! Description
94
94
 
95
95
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
96
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
96
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
97
97
  h! A ! 12:11
98
98
  a! Address matching mode. One of:
99
99
 
@@ -151,7 +151,7 @@ fields:
151
151
  ! Name ! Location ! Description
152
152
 
153
153
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
154
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
154
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
155
155
  h! A ! 20:19
156
156
  a! Address matching mode. One of:
157
157
 
@@ -209,7 +209,7 @@ fields:
209
209
  ! Name ! Location ! Description
210
210
 
211
211
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
212
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
212
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
213
213
  h! A ! 28:27
214
214
  a! Address matching mode. One of:
215
215
 
@@ -269,7 +269,7 @@ fields:
269
269
  ! Name ! Location ! Description
270
270
 
271
271
  h! L ! 39 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
272
- h! - ! 38:37 ! _Reserved_ Writes shall be ignored.
272
+ h! MT ! 38:37 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
273
273
  h! A ! 36:35
274
274
  a! Address matching mode. One of:
275
275
 
@@ -329,7 +329,7 @@ fields:
329
329
  ! Name ! Location ! Description
330
330
 
331
331
  h! L ! 47 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
332
- h! - ! 46:45 ! _Reserved_ Writes shall be ignored.
332
+ h! MT ! 46:45 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
333
333
  h! A ! 44:43
334
334
  a! Address matching mode. One of:
335
335
 
@@ -389,7 +389,7 @@ fields:
389
389
  ! Name ! Location ! Description
390
390
 
391
391
  h! L ! 55 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
392
- h! - ! 54:53 ! _Reserved_ Writes shall be ignored.
392
+ h! MT ! 54:53 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
393
393
  h! A ! 52:51
394
394
  a! Address matching mode. One of:
395
395
 
@@ -449,7 +449,7 @@ fields:
449
449
  ! Name ! Location ! Description
450
450
 
451
451
  h! L ! 63 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
452
- h! - ! 62:61 ! _Reserved_ Writes shall be ignored.
452
+ h! MT ! 62:61 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
453
453
  h! A ! 60:59
454
454
  a! Address matching mode. One of:
455
455
 
@@ -36,7 +36,7 @@ fields:
36
36
  ! Name ! Location ! Description
37
37
 
38
38
  h! L ! 7 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
39
- h! - ! 6:5 ! _Reserved_ Writes shall be ignored.
39
+ h! MT ! 6:5 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
40
40
  h! A ! 4:3
41
41
  a! Address matching mode. One of:
42
42
 
@@ -94,7 +94,7 @@ fields:
94
94
  ! Name ! Location ! Description
95
95
 
96
96
  h! L ! 15 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
97
- h! - ! 14:13 ! _Reserved_ Writes shall be ignored.
97
+ h! MT ! 14:13 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
98
98
  h! A ! 12:11
99
99
  a! Address matching mode. One of:
100
100
 
@@ -152,7 +152,7 @@ fields:
152
152
  ! Name ! Location ! Description
153
153
 
154
154
  h! L ! 23 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
155
- h! - ! 22:21 ! _Reserved_ Writes shall be ignored.
155
+ h! MT ! 22:21 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
156
156
  h! A ! 20:19
157
157
  a! Address matching mode. One of:
158
158
 
@@ -210,7 +210,7 @@ fields:
210
210
  ! Name ! Location ! Description
211
211
 
212
212
  h! L ! 31 ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
213
- h! - ! 30:29 ! _Reserved_ Writes shall be ignored.
213
+ h! MT ! 30:29 ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
214
214
  h! A ! 28:27
215
215
  a! Address matching mode. One of:
216
216
 
@@ -48,7 +48,7 @@ fields:
48
48
  ! Name ! Location ! Description
49
49
 
50
50
  h! L ! <%= ((i+1)*8)-1 %> ! Locks the entry from further modification. Additionally, when set, PMP checks also apply to M-mode for the entry.
51
- h! - ! <%= ((i+1)*8)-2 %>:<%= ((i+1)*8)-3 %> ! _Reserved_ Writes shall be ignored.
51
+ h! MT ! <%= ((i+1)*8)-2 %>:<%= ((i+1)*8)-3 %> ! When the `Smpmpmt` extension is implemented, MT (Memory Type) is a WARL field that overrides the memory type for accesses that match this PMP entry. See the `Smpmpmt` extension definition for encodings. When the `Smpmpmt` extension is not implemented, MT is _Reserved_ Writes shall be ignored.
52
52
  h! A ! <%= ((i+1)*8)-4 %>:<%= ((i+1)*8)-5 %>
53
53
  a! Address matching mode. One of:
54
54
 
@@ -44,8 +44,12 @@ description: |
44
44
  ====
45
45
 
46
46
  definedBy:
47
- extension:
48
- name: Sm
47
+ allOf:
48
+ - extension:
49
+ name: Sm
50
+ - param:
51
+ name: MCOUNTINHIBIT_IMPLEMENTED
52
+ equal: true
49
53
  fields:
50
54
  CY:
51
55
  location: 0
@@ -47,8 +47,12 @@ description: |
47
47
  ====
48
48
 
49
49
  definedBy:
50
- extension:
51
- name: Sm
50
+ allOf:
51
+ - extension:
52
+ name: Sm
53
+ - param:
54
+ name: MCOUNTINHIBIT_IMPLEMENTED
55
+ equal: true
52
56
  fields:
53
57
  CY:
54
58
  location: 0
@@ -73,6 +73,22 @@ fields:
73
73
  } else {
74
74
  return csr_value.VSXL;
75
75
  }
76
+ HUKTE:
77
+ location: 24
78
+ long_name: Hypervisor UKTE
79
+ description: |
80
+ If the Svukte extension is implemented, the HUKTE field determines
81
+ whether the HLV, HLVX, and HSV instructions, when executed in U-mode,
82
+ are Svukte-qualified.
83
+ When one of these instructions is executed in U-mode, it behaves as though
84
+ `senvcfg`.UKTE were set to the value of HUKTE.
85
+ If Svukte is not implemented, HUKTE is read-only zero.
86
+
87
+ definedBy:
88
+ extension:
89
+ name: Svukte
90
+ type: RW
91
+ reset_value: UNDEFINED_LEGAL
76
92
  VTSR:
77
93
  location: 22
78
94
  long_name: Virtual Trap SRET
@@ -11,7 +11,7 @@ definedBy:
11
11
  allOf:
12
12
  - xlen: 32
13
13
  - extension:
14
- name: Zicntr
14
+ name: Sm
15
15
  address: 0xB80
16
16
  writable: true
17
17
  description: |
@@ -165,12 +165,6 @@ fields:
165
165
  definedBy:
166
166
  extension:
167
167
  name: M
168
- cert_normative_rules:
169
- - id: csr_field.misa.M.disabled
170
- name: Disabling `misa.M` bit
171
- description: What happens when you turn off `misa.M`
172
- doc_links:
173
- - manual:csr:misa:disabling-extension
174
168
  Q:
175
169
  location: 16
176
170
  description: |
@@ -251,9 +245,3 @@ sw_read(): |
251
245
  (CSR[misa].C `<< 2) |
252
246
  (CSR[misa].B `<< 1) |
253
247
  CSR[misa].A);
254
- cert_normative_rules:
255
- - id: csr.misa.disabling_bits
256
- name: Disabling `misa` bits
257
- description: What happens when you turn off bits
258
- doc_links:
259
- - manual:csr:misa:disabling-extension
@@ -72,6 +72,26 @@ fields:
72
72
  name: Smdbltrp
73
73
  type: RW-H
74
74
  reset_value: UNDEFINED_LEGAL
75
+ MPELP:
76
+ location: 41
77
+ long_name: M-mode Previous Expected Landing Pad state
78
+ description: |
79
+ Holds the previous Expected Landing Pad (`ELP`) state when entering
80
+ M-mode from a trap, and is restored to `ELP` on `MRET`.
81
+
82
+ Defined by the Zicfilp extension.
83
+
84
+ Encoded as:
85
+
86
+ * 0 - `NO_LP_EXPECTED` - no landing pad instruction expected.
87
+ * 1 - `LP_EXPECTED` - a landing pad instruction is expected.
88
+ type: RW-H
89
+ reset_value: UNDEFINED_LEGAL
90
+ definedBy:
91
+ allOf:
92
+ - xlen: 64
93
+ - extension:
94
+ name: Zicfilp
75
95
  MPV:
76
96
  location: 39
77
97
  long_name: Machine Previous Virtualization mode
@@ -245,6 +265,24 @@ fields:
245
265
  return 2;
246
266
  }
247
267
 
268
+ SPELP:
269
+ location: 23
270
+ long_name: S-mode Previous Expected Landing Pad state
271
+ description: |
272
+ Holds the previous Expected Landing Pad (`ELP`) state when entering
273
+ (H)S-mode from a trap, and is restored to `ELP` on `SRET`.
274
+
275
+ Defined by the Zicfilp extension.
276
+
277
+ Encoded as:
278
+
279
+ * 0 - `NO_LP_EXPECTED` - no landing pad instruction expected.
280
+ * 1 - `LP_EXPECTED` - a landing pad instruction is expected.
281
+ type: RW-H
282
+ reset_value: UNDEFINED_LEGAL
283
+ definedBy:
284
+ extension:
285
+ name: Zicfilp
248
286
  TSR:
249
287
  location: 22
250
288
  long_name: Trap SRET
@@ -24,39 +24,40 @@ fields:
24
24
  MDT:
25
25
  location: 10
26
26
  description: |
27
- *Machine Disable Trap*
28
-
29
- Written to 1 when entering M-mode from an exception/interrupt.
30
- When returning via an MRET instruction, the bit is written to 0.
31
- On reset in set to 1, and software should write it to 0 when boot sequence is done.
32
- When mstatush.MDT=1, direct write by CSR instruction cannot set mstatus.MIE to 1.
27
+ see `mstatus.MDT`
28
+ type: RW-H
29
+ reset_value: UNDEFINED_LEGAL
30
+ alias: mstatus.MDT
33
31
  definedBy:
34
32
  extension:
35
33
  name: Smdbltrp
34
+ MPELP:
35
+ location: 9
36
+ description: |
37
+ see `mstatus.MPELP`
36
38
  type: RW-H
37
39
  reset_value: UNDEFINED_LEGAL
40
+ alias: mstatus.MPELP
41
+ definedBy:
42
+ extension:
43
+ name: Zicfilp
38
44
  MPV:
39
45
  location: 7
40
46
  description: |
41
- *Machine Previous Virtualization mode*
42
-
43
- Written with the prior virtualization mode when entering M-mode from an exception/interrupt.
44
- When returning via an MRET instruction, the virtualization mode becomes the value of MPV unless MPP=3, in which case the virtualization mode is always 0.
45
- Can also be written by software.
47
+ see `mstatus.MPV`
46
48
  type: RW-H
47
49
  reset_value: UNDEFINED_LEGAL
50
+ alias: mstatus.MPV
48
51
  definedBy:
49
52
  extension:
50
53
  name: H
51
54
  GVA:
52
55
  location: 6
53
56
  description: |
54
- *Guest Virtual Address*
55
-
56
- When a trap is taken and a guest virtual address is written into mtval, GVA is set.
57
- When a trap is taken and a guest virtual address is written into mtval, GVA is cleared.
57
+ see `mstatus.GVA`
58
58
  type: RW-H
59
59
  reset_value: 0
60
+ alias: mstatus.GVA
60
61
  definedBy:
61
62
  extension:
62
63
  name: H
@@ -86,3 +87,4 @@ fields:
86
87
  } else {
87
88
  return UNDEFINED_LEGAL;
88
89
  }
90
+ alias: mstatus.SBE
@@ -124,6 +124,22 @@ fields:
124
124
  return UNDEFINED_LEGAL_DETERMINISTIC;
125
125
  }
126
126
  reset_value: UNDEFINED_LEGAL
127
+ UKTE:
128
+ location: 8
129
+ description: |
130
+ If the Svukte extension is implemented, the UKTE field affects the behavior of
131
+ instruction fetches and explicit memory accesses.
132
+ When UKTE=0, instruction fetches and explicit memory accesses proceed as
133
+ though the Svukte extension were not implemented.
134
+ When UKTE=1, instruction fetches and explicit memory accesses with effective
135
+ privilege mode U or VU are Svukte-qualified, as described in <<sec:svukte>>.
136
+ If Svukte is not implemented, UKTE is read-only zero.
137
+
138
+ definedBy:
139
+ extension:
140
+ name: Svukte
141
+ type: RW
142
+ reset_value: UNDEFINED_LEGAL
127
143
  SSE:
128
144
  location: 3
129
145
  description: |
@@ -44,6 +44,18 @@ fields:
44
44
 
45
45
  type: RO
46
46
  reset_value: 2
47
+ SPELP:
48
+ alias: mstatus.SPELP
49
+ location: 23
50
+ description: |
51
+ *Previous Expected Landing Pad state*
52
+
53
+ Alias of `mstatus.SPELP`.
54
+ type: RW-H
55
+ definedBy:
56
+ extension:
57
+ name: Zicfilp
58
+ reset_value: UNDEFINED_LEGAL
47
59
  MXR:
48
60
  alias: mstatus.MXR
49
61
  location: 19
@@ -60,6 +60,30 @@ fields:
60
60
  return ($array_size(VUXLEN) > 1) ? CsrFieldType::RW : CsrFieldType::RO;
61
61
  reset_value(): |
62
62
  return ($array_size(VUXLEN) > 1) ? UNDEFINED_LEGAL : VUXLEN[0];
63
+ SPELP:
64
+ location: 23
65
+ long_name: VS-mode Previous Expected Landing Pad state
66
+ description: |
67
+ Holds the previous Expected Landing Pad (`ELP`) state when entering
68
+ VS-mode from a trap, and is restored to `ELP` on `SRET` from VS-mode.
69
+
70
+ Defined by the Zicfilp extension.
71
+
72
+ Per the privileged architecture, accesses to `sstatus.SPELP` resolve to
73
+ `mstatus.SPELP` when V=0, and to `vsstatus.SPELP` when V=1; the V=1
74
+ routing is handled by the H-extension CSR address remap (`virtual_address`
75
+ on this CSR), so this field is independent state — not an alias of
76
+ `mstatus.SPELP`.
77
+
78
+ Encoded as:
79
+
80
+ * 0 - `NO_LP_EXPECTED` - no landing pad instruction expected.
81
+ * 1 - `LP_EXPECTED` - a landing pad instruction is expected.
82
+ type: RW-H
83
+ reset_value: UNDEFINED_LEGAL
84
+ definedBy:
85
+ extension:
86
+ name: Zicfilp
63
87
  MXR:
64
88
  alias: mstatus.MXR
65
89
  location: 19