udb 0.1.17 → 0.1.18

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 (288) hide show
  1. checksums.yaml +4 -4
  2. data/.data/cfgs/example_rv64_with_overlay.yaml +140 -5
  3. data/.data/cfgs/profile/RVA23S64.yaml +1 -1
  4. data/.data/cfgs/profile/RVA23p1S64.yaml +217 -0
  5. data/.data/cfgs/profile/RVB23S64.yaml +1 -1
  6. data/.data/cfgs/profile/RVB23p1S64.yaml +179 -0
  7. data/.data/cfgs/rv32-riscv-tests.yaml +134 -0
  8. data/.data/cfgs/rv32-vector.yaml +134 -0
  9. data/.data/cfgs/rv64-riscv-tests.yaml +134 -0
  10. data/.data/cfgs/rv64-vector.yaml +134 -0
  11. data/.data/spec/schemas/schema_defs.json +4 -1
  12. data/.data/spec/std/isa/csr/I/mcounteren.layout +7 -0
  13. data/.data/spec/std/isa/csr/I/mcounteren.yaml +7 -0
  14. data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.layout +111 -0
  15. data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.yaml +840 -0
  16. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +2 -0
  17. data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +2 -0
  18. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +2 -0
  19. data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +2 -0
  20. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +7 -0
  21. data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +7 -0
  22. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -7
  23. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +2 -4
  24. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -7
  25. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +2 -4
  26. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -7
  27. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +2 -4
  28. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -7
  29. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +2 -4
  30. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -7
  31. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +2 -4
  32. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -7
  33. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +2 -4
  34. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -7
  35. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +2 -4
  36. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -7
  37. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +2 -4
  38. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -7
  39. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +2 -4
  40. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -7
  41. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +2 -4
  42. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -7
  43. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +2 -4
  44. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -7
  45. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +2 -4
  46. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -7
  47. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +2 -4
  48. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -7
  49. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +2 -4
  50. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -7
  51. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +2 -4
  52. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -7
  53. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +2 -4
  54. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -7
  55. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +2 -4
  56. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -7
  57. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +2 -4
  58. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -7
  59. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +2 -4
  60. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -7
  61. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +2 -4
  62. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -7
  63. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -7
  64. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +2 -4
  65. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -7
  66. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +2 -4
  67. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +2 -4
  68. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -7
  69. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +2 -4
  70. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -7
  71. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +2 -4
  72. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -7
  73. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +2 -4
  74. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -7
  75. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +2 -4
  76. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -7
  77. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +2 -4
  78. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -7
  79. data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +2 -4
  80. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -7
  81. data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +2 -4
  82. data/.data/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +4 -7
  83. data/.data/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +4 -4
  84. data/.data/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +4 -7
  85. data/.data/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +4 -4
  86. data/.data/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +4 -7
  87. data/.data/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +4 -4
  88. data/.data/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +4 -7
  89. data/.data/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +4 -4
  90. data/.data/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +4 -7
  91. data/.data/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +4 -4
  92. data/.data/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +4 -7
  93. data/.data/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +4 -4
  94. data/.data/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +4 -7
  95. data/.data/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +4 -4
  96. data/.data/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +4 -7
  97. data/.data/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +4 -4
  98. data/.data/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +4 -7
  99. data/.data/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +4 -4
  100. data/.data/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +4 -7
  101. data/.data/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +4 -4
  102. data/.data/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +4 -7
  103. data/.data/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +4 -4
  104. data/.data/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +4 -7
  105. data/.data/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +4 -4
  106. data/.data/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +4 -7
  107. data/.data/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +4 -4
  108. data/.data/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +4 -7
  109. data/.data/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +4 -4
  110. data/.data/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +4 -7
  111. data/.data/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +4 -4
  112. data/.data/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +4 -7
  113. data/.data/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +4 -4
  114. data/.data/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +4 -7
  115. data/.data/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +4 -4
  116. data/.data/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +4 -7
  117. data/.data/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +4 -4
  118. data/.data/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +4 -7
  119. data/.data/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +4 -4
  120. data/.data/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +4 -7
  121. data/.data/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +4 -4
  122. data/.data/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +4 -7
  123. data/.data/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +4 -7
  124. data/.data/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +4 -4
  125. data/.data/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +4 -7
  126. data/.data/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +4 -4
  127. data/.data/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +4 -4
  128. data/.data/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +4 -7
  129. data/.data/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +4 -4
  130. data/.data/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +4 -7
  131. data/.data/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +4 -4
  132. data/.data/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +4 -7
  133. data/.data/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +4 -4
  134. data/.data/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +4 -7
  135. data/.data/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +4 -4
  136. data/.data/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +4 -7
  137. data/.data/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +4 -4
  138. data/.data/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +4 -7
  139. data/.data/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +4 -4
  140. data/.data/spec/std/isa/csr/Zihpm/mhpmeventN.layout +4 -7
  141. data/.data/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +4 -4
  142. data/.data/spec/std/isa/csr/Zkr/seed.yaml +75 -0
  143. data/.data/spec/std/isa/csr/hcontext.yaml +4 -4
  144. data/.data/spec/std/isa/csr/mcontext.yaml +4 -4
  145. data/.data/spec/std/isa/csr/mcycle.yaml +2 -0
  146. data/.data/spec/std/isa/csr/mcycleh.yaml +2 -0
  147. data/.data/spec/std/isa/csr/medeleg.yaml +72 -36
  148. data/.data/spec/std/isa/csr/menvcfg.yaml +12 -1
  149. data/.data/spec/std/isa/csr/menvcfgh.yaml +12 -0
  150. data/.data/spec/std/isa/csr/mideleg.yaml +13 -36
  151. data/.data/spec/std/isa/csr/mie.yaml +3 -6
  152. data/.data/spec/std/isa/csr/minstret.yaml +2 -0
  153. data/.data/spec/std/isa/csr/minstreth.yaml +2 -0
  154. data/.data/spec/std/isa/csr/mip.yaml +3 -6
  155. data/.data/spec/std/isa/csr/misa.yaml +3 -23
  156. data/.data/spec/std/isa/csr/mseccfg.yaml +27 -1
  157. data/.data/spec/std/isa/csr/mstatus.yaml +8 -2
  158. data/.data/spec/std/isa/csr/scontext.yaml +8 -4
  159. data/.data/spec/std/isa/csr/tcontrol.yaml +6 -2
  160. data/.data/spec/std/isa/csr/tdata2.yaml +6 -2
  161. data/.data/spec/std/isa/csr/tdata3.yaml +6 -2
  162. data/.data/spec/std/isa/ext/Sdext.yaml +58 -2
  163. data/.data/spec/std/isa/ext/Sm.yaml +2 -2
  164. data/.data/spec/std/isa/ext/Smcdeleg.yaml +7 -0
  165. data/.data/spec/std/isa/ext/Smmpm.yaml +8 -0
  166. data/.data/spec/std/isa/ext/Smnpm.yaml +19 -0
  167. data/.data/spec/std/isa/ext/Smpmpdeleg.yaml +33 -0
  168. data/.data/spec/std/isa/ext/Ssccfg.yaml +7 -0
  169. data/.data/spec/std/isa/ext/Ssnpm.yaml +8 -0
  170. data/.data/spec/std/isa/ext/Sspmp.yaml +44 -0
  171. data/.data/spec/std/isa/ext/Sspmpen.yaml +30 -0
  172. data/.data/spec/std/isa/ext/Zvabd.yaml +5 -1
  173. data/.data/spec/std/isa/ext/Zvfbdota32f.yaml +23 -0
  174. data/.data/spec/std/isa/ext/Zvzip.yaml +24 -0
  175. data/.data/spec/std/isa/inst/C/c.bnez.yaml +2 -2
  176. data/.data/spec/std/isa/inst/H/hlv.b.yaml +1 -1
  177. data/.data/spec/std/isa/inst/H/hlv.bu.yaml +1 -1
  178. data/.data/spec/std/isa/inst/H/hlv.d.yaml +1 -1
  179. data/.data/spec/std/isa/inst/H/hlv.h.yaml +1 -1
  180. data/.data/spec/std/isa/inst/H/hlv.hu.yaml +1 -1
  181. data/.data/spec/std/isa/inst/H/hlv.w.yaml +1 -1
  182. data/.data/spec/std/isa/inst/H/hlv.wu.yaml +1 -1
  183. data/.data/spec/std/isa/inst/H/hlvx.hu.yaml +1 -1
  184. data/.data/spec/std/isa/inst/H/hlvx.wu.yaml +1 -1
  185. data/.data/spec/std/isa/inst/H/hsv.b.yaml +1 -1
  186. data/.data/spec/std/isa/inst/H/hsv.d.yaml +1 -1
  187. data/.data/spec/std/isa/inst/H/hsv.h.yaml +1 -1
  188. data/.data/spec/std/isa/inst/H/hsv.w.yaml +1 -1
  189. data/.data/spec/std/isa/inst/I/ld.yaml +9 -8
  190. data/.data/spec/std/isa/inst/I/sd.yaml +9 -8
  191. data/.data/spec/std/isa/inst/Q/fcvt.q.d.yaml +1 -1
  192. data/.data/spec/std/isa/inst/Q/flq.yaml +1 -1
  193. data/.data/spec/std/isa/inst/Sdext/dret.yaml +72 -6
  194. data/.data/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +2 -2
  195. data/.data/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +2 -2
  196. data/.data/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +2 -2
  197. data/.data/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +2 -2
  198. data/.data/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +2 -2
  199. data/.data/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +2 -2
  200. data/.data/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +2 -2
  201. data/.data/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +2 -2
  202. data/.data/spec/std/isa/inst/V/vnclip.wi.yaml +2 -2
  203. data/.data/spec/std/isa/inst/V/vnclip.wv.yaml +2 -2
  204. data/.data/spec/std/isa/inst/V/vnclip.wx.yaml +2 -2
  205. data/.data/spec/std/isa/inst/V/vnclipu.wi.yaml +2 -2
  206. data/.data/spec/std/isa/inst/V/vnclipu.wv.yaml +2 -2
  207. data/.data/spec/std/isa/inst/V/vnclipu.wx.yaml +2 -2
  208. data/.data/spec/std/isa/inst/V/vnsra.wi.yaml +2 -2
  209. data/.data/spec/std/isa/inst/V/vnsra.wv.yaml +2 -2
  210. data/.data/spec/std/isa/inst/V/vnsra.wx.yaml +2 -2
  211. data/.data/spec/std/isa/inst/V/vnsrl.wi.yaml +2 -2
  212. data/.data/spec/std/isa/inst/V/vnsrl.wv.yaml +2 -2
  213. data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +2 -2
  214. data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +28 -20
  215. data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +35 -20
  216. data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +3 -3
  217. data/.data/spec/std/isa/inst/Zvabd/vabd.vx.yaml +69 -0
  218. data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +3 -3
  219. data/.data/spec/std/isa/inst/Zvabd/{vabs.v.yaml → vabdu.vx.yaml} +17 -11
  220. data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +1 -1
  221. data/.data/spec/std/isa/inst/Zvabd/vwabda.vx.yaml +73 -0
  222. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +1 -1
  223. data/.data/spec/std/isa/inst/Zvabd/vwabdau.vx.yaml +74 -0
  224. data/.data/spec/std/isa/inst/Zvfbdota32f/vfbdota.vv.yaml +68 -0
  225. data/.data/spec/std/isa/inst/Zvzip/vpaire.vv.yaml +36 -0
  226. data/.data/spec/std/isa/inst/Zvzip/vpairo.vv.yaml +37 -0
  227. data/.data/spec/std/isa/inst/Zvzip/vunzipe.v.yaml +33 -0
  228. data/.data/spec/std/isa/inst/Zvzip/vunzipo.v.yaml +33 -0
  229. data/.data/spec/std/isa/inst/Zvzip/vzip.vv.yaml +37 -0
  230. data/.data/spec/std/isa/isa/builtin_functions.idl +51 -0
  231. data/.data/spec/std/isa/isa/globals.isa +117 -5
  232. data/.data/spec/std/isa/param/HCONTEXT_IMPLEMENTED.yaml +29 -0
  233. data/.data/spec/std/isa/param/{MCONTEXT_AVAILABLE.yaml → MCONTEXT_IMPLEMENTED.yaml} +3 -3
  234. data/.data/spec/std/isa/param/MEDELEG_DELEGATABLE.yaml +121 -0
  235. data/.data/spec/std/isa/param/MEI_INTR_IMPL.yaml +1 -1
  236. data/.data/spec/std/isa/param/MIDELEG_DELEGATABLE.yaml +177 -0
  237. data/.data/spec/std/isa/param/MSI_INTR_IMPL.yaml +1 -1
  238. data/.data/spec/std/isa/param/MTI_INTR_IMPL.yaml +1 -1
  239. data/.data/spec/std/isa/param/SCONTEXT_IMPLEMENTED.yaml +18 -0
  240. data/.data/spec/std/isa/param/SDTRIG_BREAKPOINT_REENTRANCY.yaml +45 -0
  241. data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_EXCEPTIONS.yaml +37 -0
  242. data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
  243. data/.data/spec/std/isa/param/SDTRIG_ICOUNT_COUNT_HARDWIRED_1.yaml +23 -0
  244. data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SELF_WRITE_SETS_PENDING.yaml +23 -0
  245. data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SUPPORTED_TRIGGERS.yaml +25 -0
  246. data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_INTERRUPTS.yaml +37 -0
  247. data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
  248. data/.data/spec/std/isa/param/SDTRIG_MAX_CHAIN_LENGTH.yaml +33 -0
  249. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_EXECUTE_WRITABLE.yaml +22 -0
  250. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_LOAD_WRITABLE.yaml +22 -0
  251. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MASKMAX6.yaml +26 -0
  252. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MATCH_LEGAL_VALUES.yaml +41 -0
  253. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SELECT_WRITABLE.yaml +22 -0
  254. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SIZE_LEGAL_VALUES.yaml +38 -0
  255. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_STORE_WRITABLE.yaml +22 -0
  256. data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SUPPORTED_TRIGGERS.yaml +25 -0
  257. data/.data/spec/std/isa/param/SDTRIG_M_WRITABLE.yaml +17 -0
  258. data/.data/spec/std/isa/param/SDTRIG_NUM_TRIGGERS.yaml +22 -0
  259. data/.data/spec/std/isa/param/SDTRIG_S_WRITABLE.yaml +19 -0
  260. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_MCONTEXT_MATCH.yaml +24 -0
  261. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_VMID_MATCH.yaml +23 -0
  262. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHVALUE_LEN.yaml +26 -0
  263. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_ASID_MATCH.yaml +23 -0
  264. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_SCONTEXT_MATCH.yaml +26 -0
  265. data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SVALUE_LEN.yaml +26 -0
  266. data/.data/spec/std/isa/param/SDTRIG_U_WRITABLE.yaml +19 -0
  267. data/.data/spec/std/isa/param/SDTRIG_VS_WRITABLE.yaml +19 -0
  268. data/.data/spec/std/isa/param/SDTRIG_VU_WRITABLE.yaml +19 -0
  269. data/.data/spec/std/isa/param/SEI_INTR_IMPL.yaml +1 -1
  270. data/.data/spec/std/isa/param/SSEED_READ_ONLY_ZERO.yaml +28 -0
  271. data/.data/spec/std/isa/param/SSI_INTR_IMPL.yaml +1 -1
  272. data/.data/spec/std/isa/param/STI_INTR_IMPL.yaml +1 -1
  273. data/.data/spec/std/isa/param/TCONTROL_IMPLEMENTED.yaml +16 -0
  274. data/.data/spec/std/isa/param/TDATA2_IMPLEMENTED.yaml +26 -0
  275. data/.data/spec/std/isa/param/TDATA3_IMPLEMENTED.yaml +29 -0
  276. data/.data/spec/std/isa/param/USEED_READ_ONLY_ZERO.yaml +28 -0
  277. data/.data/spec/std/isa/profile/RVA23p1S64.yaml +37 -0
  278. data/.data/spec/std/isa/profile/RVB23p1S64.yaml +39 -0
  279. data/.data/spec/std/isa/profile_family/RVA.yaml +3 -1
  280. data/.data/spec/std/isa/profile_family/RVB.yaml +3 -1
  281. data/.data/spec/std/isa/profile_release/RVA23p1.yaml +30 -0
  282. data/.data/spec/std/isa/profile_release/RVB23p1.yaml +30 -0
  283. data/lib/udb/version.rb +1 -1
  284. metadata +65 -8
  285. data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +0 -19
  286. data/.data/spec/std/isa/param/VSEI_INTR_IMPL.yaml +0 -28
  287. data/.data/spec/std/isa/param/VSSI_INTR_IMPL.yaml +0 -28
  288. data/.data/spec/std/isa/param/VSTI_INTR_IMPL.yaml +0 -33
@@ -11,6 +11,8 @@ kind: csr
11
11
  name: mhpmevent9
12
12
  long_name: Machine Hardware Performance Counter 9 Control
13
13
  address: 0x329
14
+ indirect_address: 0x49
15
+ indirect_slot: 2
14
16
  writable: true
15
17
  priv_mode: M
16
18
  length: 64
@@ -18,13 +20,8 @@ description: |
18
20
  Programmable hardware performance counter event selector
19
21
  <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %>
20
22
  definedBy:
21
- allOf:
22
- - extension:
23
- name: Sm
24
- - param:
25
- name: HPM_COUNTER_EN
26
- index: 9
27
- equal: true
23
+ extension:
24
+ name: Sm
28
25
  fields:
29
26
  OF:
30
27
  location: 63
@@ -11,6 +11,8 @@ kind: csr
11
11
  name: mhpmevent9h
12
12
  long_name: Machine Hardware Performance Counter 9 Control, High half
13
13
  address: 0x729
14
+ indirect_address: 0x49
15
+ indirect_slot: 5
14
16
  writable: true
15
17
  priv_mode: M
16
18
  length: 32
@@ -24,10 +26,8 @@ definedBy:
24
26
  - extension:
25
27
  name: Sm
26
28
  - xlen: 32
27
- - param:
28
- name: HPM_COUNTER_EN
29
- index: 9
30
- equal: true
29
+ - extension:
30
+ name: Sscofpmf
31
31
  fields:
32
32
  OF:
33
33
  location: 31
@@ -9,6 +9,8 @@ kind: csr
9
9
  name: <%= "mhpmevent#{hpm_num}" %>
10
10
  long_name: Machine Hardware Performance Counter <%= hpm_num %> Control
11
11
  address: <%= "0x" + (0x320 + hpm_num).to_s(16).upcase %>
12
+ indirect_address: <%= "0x" + (0x40 + hpm_num).to_s(16).upcase %>
13
+ indirect_slot: 2
12
14
  writable: true
13
15
  priv_mode: M
14
16
  length: 64
@@ -16,13 +18,8 @@ description: |
16
18
  Programmable hardware performance counter event selector
17
19
  <%% if ext?(:Sscofpmf) %> and overflow/filtering control<%% end %>
18
20
  definedBy:
19
- allOf:
20
- - extension:
21
- name: Sm
22
- - param:
23
- name: HPM_COUNTER_EN
24
- index: <%= hpm_num %>
25
- equal: true
21
+ extension:
22
+ name: Sm
26
23
  fields:
27
24
  OF:
28
25
  location: 63
@@ -9,6 +9,8 @@ kind: csr
9
9
  name: <%= "mhpmevent#{hpm_num}h" %>
10
10
  long_name: Machine Hardware Performance Counter <%= hpm_num %> Control, High half
11
11
  address: 0x<%= (0x720 + hpm_num).to_s(16).upcase %>
12
+ indirect_address: <%= "0x" + (0x40 + hpm_num).to_s(16).upcase %>
13
+ indirect_slot: 5
12
14
  writable: true
13
15
  priv_mode: M
14
16
  length: 32
@@ -22,10 +24,8 @@ definedBy:
22
24
  - extension:
23
25
  name: Sm
24
26
  - xlen: 32
25
- - param:
26
- name: HPM_COUNTER_EN
27
- index: <%= hpm_num %>
28
- equal: true
27
+ - extension:
28
+ name: Sscofpmf
29
29
  fields:
30
30
  OF:
31
31
  location: 31
@@ -0,0 +1,75 @@
1
+ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../../schemas/csr_schema.json
5
+
6
+ $schema: "csr_schema.json#"
7
+ kind: csr
8
+ name: seed
9
+ long_name: Seed for cryptographic random bit generators
10
+ address: 0x015
11
+ writable: true
12
+ priv_mode: U
13
+ length: 32
14
+ description: |
15
+ The seed CSR provides an interface to a NIST SP 800-90B (Turan et al., 2018)
16
+ or BSI AIS-31 (Killmann & Schindler, 2011) compliant physical Entropy Source (ES).
17
+
18
+ The CSR provides up to 16 physical entropy bits that can be used to seed
19
+ cryptographic random bit generators. The write value is ignored by
20
+ implementations; the write is used to signal polling and flushing.
21
+ definedBy:
22
+ extension:
23
+ name: Zkr
24
+ fields:
25
+ OPST:
26
+ location: 31-30
27
+ description: |
28
+ Status bits returned by the entropy source.
29
+
30
+ Encodings are:
31
+
32
+ * 0 - BIST
33
+ * 1 - WAIT
34
+ * 2 - ES16
35
+ * 3 - DEAD
36
+ type: RW-H
37
+ sw_write(csr_value): |
38
+ write_seed();
39
+ return CSR[seed].OPST;
40
+ reset_value: 0
41
+ ENTROPY:
42
+ location: 15-0
43
+ description: |
44
+ Sixteen bits of randomness.
45
+
46
+ This field is valid only when `OPST` is ES16. When `OPST` is not ES16,
47
+ `ENTROPY` must be zero.
48
+ type: RW-H
49
+ sw_write(csr_value): |
50
+ return CSR[seed].ENTROPY;
51
+ reset_value: 0
52
+ sw_read(): |
53
+ # CSRRS/CSRRC/CSRRSI/CSRRCI are the CSR instructions with funct3[1] set.
54
+ # Bits 19:15 hold rs1 for the register forms and uimm for the immediate
55
+ # forms, so a single zero check covers rs1 == x0 and uimm == 0.
56
+ Boolean read_only_access = ($encoding[13] == 1'b1) && ($encoding[19:15] == 5'b00000);
57
+
58
+ if (read_only_access) {
59
+ raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
60
+ }
61
+
62
+ if (mode() == PrivilegeMode::U && CSR[mseccfg].USEED == 1'b0) {
63
+ raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
64
+ } else if (mode() == PrivilegeMode::S && CSR[mseccfg].SSEED == 1'b0) {
65
+ raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
66
+ } else if (mode() == PrivilegeMode::VS || mode() == PrivilegeMode::VU) {
67
+ if (CSR[mseccfg].SSEED == 1'b1) {
68
+ raise(ExceptionCode::VirtualInstruction, mode(), $encoding);
69
+ } else {
70
+ raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
71
+ }
72
+ }
73
+
74
+ # A single poll returns both the status and the entropy it goes with.
75
+ return read_seed();
@@ -39,8 +39,8 @@ fields:
39
39
  unimplemented_csr($encoding);
40
40
  }
41
41
 
42
- # check if HCONTEXT is available
43
- if (!HCONTEXT_AVAILABLE) {
42
+ # check if HCONTEXT is implemented
43
+ if (!HCONTEXT_IMPLEMENTED) {
44
44
  unimplemented_csr($encoding);
45
45
  }
46
46
 
@@ -55,8 +55,8 @@ sw_read(): |
55
55
  unimplemented_csr($encoding);
56
56
  }
57
57
 
58
- # check if HCONTEXT is available
59
- if (!HCONTEXT_AVAILABLE) {
58
+ # check if HCONTEXT is implemented
59
+ if (!HCONTEXT_IMPLEMENTED) {
60
60
  unimplemented_csr($encoding);
61
61
  }
62
62
 
@@ -39,8 +39,8 @@ fields:
39
39
  implement 7 bits on RV32 and 14 bits on RV64.
40
40
  reset_value: 0
41
41
  sw_write(csr_value): |
42
- # check if MCONTEXT is available
43
- if (!MCONTEXT_AVAILABLE) {
42
+ # check if MCONTEXT is implemented
43
+ if (!MCONTEXT_IMPLEMENTED) {
44
44
  unimplemented_csr($encoding);
45
45
  }
46
46
 
@@ -48,8 +48,8 @@ fields:
48
48
  Bits<14> hcontext_value = csr_value.HCONTEXT & ((14'1 << DBG_HCONTEXT_WIDTH) - 1);
49
49
  return hcontext_value;
50
50
  sw_read(): |
51
- # check if MCONTEXT is available
52
- if (!MCONTEXT_AVAILABLE) {
51
+ # check if MCONTEXT is implemented
52
+ if (!MCONTEXT_IMPLEMENTED) {
53
53
  unimplemented_csr($encoding);
54
54
  }
55
55
  return $bits(CSR[mcontext]);
@@ -11,6 +11,8 @@ definedBy:
11
11
  extension:
12
12
  name: Sm
13
13
  address: 0xB00
14
+ indirect_address: 0x40
15
+ indirect_slot: 1
14
16
  writable: true
15
17
  description: |
16
18
  Counts the number of clock cycles executed by the processor core on which
@@ -13,6 +13,8 @@ definedBy:
13
13
  - extension:
14
14
  name: Sm
15
15
  address: 0xB80
16
+ indirect_address: 0x40
17
+ indirect_slot: 4
16
18
  writable: true
17
19
  description: |
18
20
  High-half alias of `mcycle`.
@@ -76,8 +76,10 @@ fields:
76
76
  ! 1 ! M ! S
77
77
  !===
78
78
  <%- end -%>
79
- type: RW
80
- reset_value: UNDEFINED_LEGAL
79
+ type(): |
80
+ return MEDELEG_DELEGATABLE[0] ? CsrFieldType::RW : CsrFieldType::RO;
81
+ reset_value(): |
82
+ return MEDELEG_DELEGATABLE[0] ? UNDEFINED_LEGAL : 0;
81
83
  IAF:
82
84
  location: 1
83
85
  description: |
@@ -114,8 +116,10 @@ fields:
114
116
  !===
115
117
  <%- end -%>
116
118
 
117
- type: RW
118
- reset_value: UNDEFINED_LEGAL
119
+ type(): |
120
+ return MEDELEG_DELEGATABLE[1] ? CsrFieldType::RW : CsrFieldType::RO;
121
+ reset_value(): |
122
+ return MEDELEG_DELEGATABLE[1] ? UNDEFINED_LEGAL : 0;
119
123
  II:
120
124
  location: 2
121
125
  description: |
@@ -151,8 +155,10 @@ fields:
151
155
  ! 1 ! M ! S
152
156
  !===
153
157
  <%- end -%>
154
- type: RW
155
- reset_value: UNDEFINED_LEGAL
158
+ type(): |
159
+ return MEDELEG_DELEGATABLE[2] ? CsrFieldType::RW : CsrFieldType::RO;
160
+ reset_value(): |
161
+ return MEDELEG_DELEGATABLE[2] ? UNDEFINED_LEGAL : 0;
156
162
  B:
157
163
  location: 3
158
164
  description: |
@@ -188,8 +194,10 @@ fields:
188
194
  ! 1 ! M ! S
189
195
  !===
190
196
  <%- end -%>
191
- type: RW
192
- reset_value: UNDEFINED_LEGAL
197
+ type(): |
198
+ return MEDELEG_DELEGATABLE[3] ? CsrFieldType::RW : CsrFieldType::RO;
199
+ reset_value(): |
200
+ return MEDELEG_DELEGATABLE[3] ? UNDEFINED_LEGAL : 0;
193
201
  LAM:
194
202
  location: 4
195
203
  description: |
@@ -230,8 +238,10 @@ fields:
230
238
  !===
231
239
  <%- end -%>
232
240
 
233
- type: RW
234
- reset_value: UNDEFINED_LEGAL
241
+ type(): |
242
+ return MEDELEG_DELEGATABLE[4] ? CsrFieldType::RW : CsrFieldType::RO;
243
+ reset_value(): |
244
+ return MEDELEG_DELEGATABLE[4] ? UNDEFINED_LEGAL : 0;
235
245
  LAF:
236
246
  location: 5
237
247
  description: |
@@ -268,8 +278,10 @@ fields:
268
278
  !===
269
279
  <%- end -%>
270
280
 
271
- type: RW
272
- reset_value: UNDEFINED_LEGAL
281
+ type(): |
282
+ return MEDELEG_DELEGATABLE[5] ? CsrFieldType::RW : CsrFieldType::RO;
283
+ reset_value(): |
284
+ return MEDELEG_DELEGATABLE[5] ? UNDEFINED_LEGAL : 0;
273
285
  SAM:
274
286
  location: 6
275
287
  description: |
@@ -310,8 +322,10 @@ fields:
310
322
  !===
311
323
  <%- end -%>
312
324
 
313
- type: RW
314
- reset_value: UNDEFINED_LEGAL
325
+ type(): |
326
+ return MEDELEG_DELEGATABLE[6] ? CsrFieldType::RW : CsrFieldType::RO;
327
+ reset_value(): |
328
+ return MEDELEG_DELEGATABLE[6] ? UNDEFINED_LEGAL : 0;
315
329
  SAF:
316
330
  location: 7
317
331
  description: |
@@ -347,8 +361,10 @@ fields:
347
361
  ! 1 ! M ! S
348
362
  !===
349
363
  <%- end -%>
350
- type: RW
351
- reset_value: UNDEFINED_LEGAL
364
+ type(): |
365
+ return MEDELEG_DELEGATABLE[7] ? CsrFieldType::RW : CsrFieldType::RO;
366
+ reset_value(): |
367
+ return MEDELEG_DELEGATABLE[7] ? UNDEFINED_LEGAL : 0;
352
368
  EU:
353
369
  location: 8
354
370
  description: |
@@ -385,8 +401,10 @@ fields:
385
401
  !===
386
402
  <%- end -%>
387
403
 
388
- type: RW
389
- reset_value: UNDEFINED_LEGAL
404
+ type(): |
405
+ return MEDELEG_DELEGATABLE[8] ? CsrFieldType::RW : CsrFieldType::RO;
406
+ reset_value(): |
407
+ return MEDELEG_DELEGATABLE[8] ? UNDEFINED_LEGAL : 0;
390
408
  ES:
391
409
  location: 9
392
410
  description: |
@@ -409,8 +427,10 @@ fields:
409
427
  ! 0 ! M ! M
410
428
  ! 1 ! M ! (H)S
411
429
  !===
412
- type: RW
413
- reset_value: UNDEFINED_LEGAL
430
+ type(): |
431
+ return MEDELEG_DELEGATABLE[9] ? CsrFieldType::RW : CsrFieldType::RO;
432
+ reset_value(): |
433
+ return MEDELEG_DELEGATABLE[9] ? UNDEFINED_LEGAL : 0;
414
434
  EVS:
415
435
  location: 10
416
436
  description: |
@@ -433,8 +453,10 @@ fields:
433
453
  ! 0 ! M ! M
434
454
  ! 1 ! M ! (H)S
435
455
  !===
436
- type: RW
437
- reset_value: UNDEFINED_LEGAL
456
+ type(): |
457
+ return MEDELEG_DELEGATABLE[10] ? CsrFieldType::RW : CsrFieldType::RO;
458
+ reset_value(): |
459
+ return MEDELEG_DELEGATABLE[10] ? UNDEFINED_LEGAL : 0;
438
460
  definedBy:
439
461
  extension:
440
462
  name: H
@@ -483,8 +505,10 @@ fields:
483
505
  ! 1 ! M ! S
484
506
  !===
485
507
  <%- end -%>
486
- type: RW
487
- reset_value: UNDEFINED_LEGAL
508
+ type(): |
509
+ return MEDELEG_DELEGATABLE[12] ? CsrFieldType::RW : CsrFieldType::RO;
510
+ reset_value(): |
511
+ return MEDELEG_DELEGATABLE[12] ? UNDEFINED_LEGAL : 0;
488
512
  LPF:
489
513
  location: 13
490
514
  description: |
@@ -521,8 +545,10 @@ fields:
521
545
  !===
522
546
  <%- end -%>
523
547
 
524
- type: RW
525
- reset_value: UNDEFINED_LEGAL
548
+ type(): |
549
+ return MEDELEG_DELEGATABLE[13] ? CsrFieldType::RW : CsrFieldType::RO;
550
+ reset_value(): |
551
+ return MEDELEG_DELEGATABLE[13] ? UNDEFINED_LEGAL : 0;
526
552
  SPF:
527
553
  location: 15
528
554
  description: |
@@ -558,8 +584,10 @@ fields:
558
584
  ! 1 ! M ! S
559
585
  !===
560
586
  <%- end -%>
561
- type: RW
562
- reset_value: UNDEFINED_LEGAL
587
+ type(): |
588
+ return MEDELEG_DELEGATABLE[15] ? CsrFieldType::RW : CsrFieldType::RO;
589
+ reset_value(): |
590
+ return MEDELEG_DELEGATABLE[15] ? UNDEFINED_LEGAL : 0;
563
591
  IGPF:
564
592
  location: 20
565
593
  description: |
@@ -582,8 +610,10 @@ fields:
582
610
  ! 0 ! M ! M
583
611
  ! 1 ! M ! HS
584
612
  !===
585
- type: RW
586
- reset_value: UNDEFINED_LEGAL
613
+ type(): |
614
+ return MEDELEG_DELEGATABLE[20] ? CsrFieldType::RW : CsrFieldType::RO;
615
+ reset_value(): |
616
+ return MEDELEG_DELEGATABLE[20] ? UNDEFINED_LEGAL : 0;
587
617
  definedBy:
588
618
  extension:
589
619
  name: H
@@ -610,8 +640,10 @@ fields:
610
640
  ! 1 ! M ! HS
611
641
  !===
612
642
 
613
- type: RW
614
- reset_value: UNDEFINED_LEGAL
643
+ type(): |
644
+ return MEDELEG_DELEGATABLE[21] ? CsrFieldType::RW : CsrFieldType::RO;
645
+ reset_value(): |
646
+ return MEDELEG_DELEGATABLE[21] ? UNDEFINED_LEGAL : 0;
615
647
  definedBy:
616
648
  extension:
617
649
  name: H
@@ -638,8 +670,10 @@ fields:
638
670
  ! 1 ! M ! HS
639
671
  !===
640
672
 
641
- type: RW
642
- reset_value: UNDEFINED_LEGAL
673
+ type(): |
674
+ return MEDELEG_DELEGATABLE[22] ? CsrFieldType::RW : CsrFieldType::RO;
675
+ reset_value(): |
676
+ return MEDELEG_DELEGATABLE[22] ? UNDEFINED_LEGAL : 0;
643
677
  definedBy:
644
678
  extension:
645
679
  name: H
@@ -665,8 +699,10 @@ fields:
665
699
  ! 0 ! M ! M
666
700
  ! 1 ! M ! HS
667
701
  !===
668
- type: RW
669
- reset_value: UNDEFINED_LEGAL
702
+ type(): |
703
+ return MEDELEG_DELEGATABLE[23] ? CsrFieldType::RW : CsrFieldType::RO;
704
+ reset_value(): |
705
+ return MEDELEG_DELEGATABLE[23] ? UNDEFINED_LEGAL : 0;
670
706
  definedBy:
671
707
  extension:
672
708
  name: H
@@ -88,7 +88,7 @@ description: |
88
88
  NOTE: The Svade extension requires page-fault exceptions be raised when PTE
89
89
  A/D bits need be set, hence Svade is implemented when ADUE=0.
90
90
 
91
- If the Smcdeleg extension is implemented, the CDE (Counter Delegation Enable) bit controls whether Zicntr and Zihpm counters can be delegated to S-mode. When CDE=1, the Smcdeleg extension is enabled, see <<smcdeleg>>. When CDE=0, the Smcdeleg and Ssccfg extensions appear to be not implemented. If Smcdeleg is not implemented, CDE is read-only zero.
91
+ The definition of the CDE field is furnished by the Smcdeleg extension.
92
92
 
93
93
  The definition of the STCE field is furnished by the Sstc extension.
94
94
 
@@ -204,6 +204,17 @@ fields:
204
204
  return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO;
205
205
  reset_value(): |
206
206
  return (implemented?(ExtensionName::Svadu)) ? UNDEFINED_LEGAL : 0;
207
+ CDE:
208
+ location: 60
209
+ description: |
210
+ *Counter Delegation Enable*
211
+
212
+ If the Smcdeleg extension is implemented, the CDE (Counter Delegation Enable) bit controls whether Zicntr and Zihpm counters can be delegated to S-mode. When CDE=1, the Smcdeleg extension is enabled, see <<smcdeleg>>. When CDE=0, the Smcdeleg and Ssccfg extensions appear to be not implemented. If Smcdeleg is not implemented, CDE is read-only zero.
213
+ definedBy:
214
+ extension:
215
+ name: Smcdeleg
216
+ type: RW
217
+ reset_value: UNDEFINED_LEGAL
207
218
  CBZE:
208
219
  location: 7
209
220
  description: |
@@ -57,3 +57,15 @@ fields:
57
57
  return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO;
58
58
  reset_value(): |
59
59
  return (implemented?(ExtensionName::Svadu)) ? UNDEFINED_LEGAL : 0;
60
+ CDE:
61
+ location: 28
62
+ alias: menvcfg.CDE
63
+ description: |
64
+ *Counter Delegation Enable*
65
+
66
+ Alias of `menvcfg.CDE`
67
+ definedBy:
68
+ extension:
69
+ name: Smcdeleg
70
+ type: RW
71
+ reset_value: UNDEFINED_LEGAL
@@ -102,7 +102,7 @@ fields:
102
102
 
103
103
  When 1, Supervisor Software interrupts are delegated to HS/S-mode.
104
104
  type(): |
105
- return SSI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
105
+ return MIDELEG_DELEGATABLE[1] ? CsrFieldType::RW : CsrFieldType::RO;
106
106
  reset_value: 0
107
107
  sw_write(csr_value): |
108
108
  if (csr_value.SSI == 0) {
@@ -124,13 +124,6 @@ fields:
124
124
  definedBy:
125
125
  extension:
126
126
  name: H
127
- sw_write(csr_value): |
128
- if (csr_value.VSSI == 0) {
129
- CSR[hie].VSSIE = 0;
130
- CSR[hip].VSSIP = 0;
131
- CSR[hideleg].VSSI = 0;
132
- }
133
- return csr_value.VSSI;
134
127
  MSI:
135
128
  location: 3
136
129
  description: |
@@ -139,7 +132,7 @@ fields:
139
132
  When 1, Machine Software interrupts are delegated to HS/S-mode.
140
133
  This is unusual but permitted. See https://github.com/riscv/riscv-isa-manual/issues/3162.
141
134
  type(): |
142
- return MSI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
135
+ return MIDELEG_DELEGATABLE[3] ? CsrFieldType::RW : CsrFieldType::RO;
143
136
  reset_value: 0
144
137
  STI:
145
138
  location: 5
@@ -148,7 +141,7 @@ fields:
148
141
 
149
142
  When 1, Supervisor Timer interrupts are delegated to HS/S-mode.
150
143
  type(): |
151
- return STI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
144
+ return MIDELEG_DELEGATABLE[5] ? CsrFieldType::RW : CsrFieldType::RO;
152
145
  reset_value: 0
153
146
  VSTI:
154
147
  location: 6
@@ -163,13 +156,6 @@ fields:
163
156
  definedBy:
164
157
  extension:
165
158
  name: H
166
- sw_write(csr_value): |
167
- if (csr_value.VSTI == 0) {
168
- CSR[hie].VSTIE = 0;
169
- CSR[hip].VSTIP = 0;
170
- CSR[hideleg].VSTI = 0;
171
- }
172
- return csr_value.VSTI;
173
159
  MTI:
174
160
  location: 7
175
161
  description: |
@@ -178,7 +164,7 @@ fields:
178
164
  When 1, Machine Timer interrupts are delegated to HS/S-mode.
179
165
  This is unusual but permitted. See https://github.com/riscv/riscv-isa-manual/issues/3162.
180
166
  type(): |
181
- return MTI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
167
+ return MIDELEG_DELEGATABLE[7] ? CsrFieldType::RW : CsrFieldType::RO;
182
168
  reset_value: 0
183
169
  SEI:
184
170
  location: 9
@@ -187,7 +173,7 @@ fields:
187
173
 
188
174
  When 1, Supervisor External interrupts are delegated to HS/S-mode.
189
175
  type(): |
190
- return SEI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
176
+ return MIDELEG_DELEGATABLE[9] ? CsrFieldType::RW : CsrFieldType::RO;
191
177
  reset_value: 0
192
178
  VSEI:
193
179
  location: 10
@@ -200,13 +186,6 @@ fields:
200
186
  definedBy:
201
187
  extension:
202
188
  name: H
203
- sw_write(csr_value): |
204
- if (csr_value.VSEI == 0) {
205
- CSR[hie].VSEIE = 0;
206
- CSR[hip].VSEIP = 0;
207
- CSR[hideleg].VSEI = 0;
208
- }
209
- return csr_value.VSEI;
210
189
  MEI:
211
190
  location: 11
212
191
  description: |
@@ -215,32 +194,30 @@ fields:
215
194
  When 1, Machine External interrupts are delegated to HS/S-mode.
216
195
  This is unusual but permitted. See https://github.com/riscv/riscv-isa-manual/issues/3162.
217
196
  type(): |
218
- return MEI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
197
+ return MIDELEG_DELEGATABLE[11] ? CsrFieldType::RW : CsrFieldType::RO;
219
198
  reset_value: 0
220
199
  SGEI:
221
200
  location: 12
222
201
  description: |
223
202
  *Supervisor Guest External Interrupt delegation*
224
203
 
225
- Supervisor Guest External interrupts are always delegated to HS-mode, so this field is read-only one.
204
+ Supervisor Guest External interrupts are always delegated to HS-mode when any guest external interrupts
205
+ are implemented (`NUM_EXTERNAL_GUEST_INTERRUPTS` is nonzero), so this field is read-only one;
206
+ otherwise it is read-only zero.
226
207
  type: RO
227
- reset_value: 1
208
+ reset_value(): |
209
+ return MIDELEG_DELEGATABLE[12] ? 1 : 0;
228
210
  definedBy:
229
211
  extension:
230
212
  name: H
231
- sw_write(csr_value): |
232
- if (csr_value.SGEI == 0) {
233
- CSR[hie].SGEIE = 0;
234
- CSR[hip].SGEIP = 0;
235
- }
236
- return csr_value.SGEI;
237
213
  LCOFI:
238
214
  location: 13
239
215
  description: |
240
216
  *Local Counter Overflow Interrupt delegation*
241
217
 
242
218
  When 1, local counter overflow interrupts are delegated to (H)S-mode.
243
- type: RW
219
+ type(): |
220
+ return MIDELEG_DELEGATABLE[13] ? CsrFieldType::RW : CsrFieldType::RO;
244
221
  reset_value: 0
245
222
  definedBy:
246
223
  extension:
@@ -30,8 +30,7 @@ fields:
30
30
  location: 2
31
31
  description: |
32
32
  Enables Virtual Supervisor Software Interrupts.
33
- type(): |
34
- return VSSI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
33
+ type: RW
35
34
  definedBy:
36
35
  extension:
37
36
  name: H
@@ -56,8 +55,7 @@ fields:
56
55
  location: 6
57
56
  description: |
58
57
  Enables Virtual Supervisor Timer Interrupts.
59
- type(): |
60
- return VSTI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
58
+ type: RW
61
59
  definedBy:
62
60
  extension:
63
61
  name: H
@@ -82,8 +80,7 @@ fields:
82
80
  location: 10
83
81
  description: |
84
82
  Enables Virtual Supervisor External Interrupts.
85
- type(): |
86
- return VSEI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
83
+ type: RW
87
84
  definedBy:
88
85
  extension:
89
86
  name: H
@@ -8,6 +8,8 @@ kind: csr
8
8
  name: minstret
9
9
  long_name: Machine Instructions Retired Counter
10
10
  address: 0xB02
11
+ indirect_address: 0x42
12
+ indirect_slot: 1
11
13
  writable: true
12
14
  description: |
13
15
  Counts the number of instructions retired by this hart from some arbitrary start point in the past.
@@ -8,6 +8,8 @@ kind: csr
8
8
  name: minstreth
9
9
  long_name: Machine Instructions Retired Counter
10
10
  address: 0xB82
11
+ indirect_address: 0x42
12
+ indirect_slot: 4
11
13
  writable: true
12
14
  description: |
13
15
  Upper half of 64-bit instructions retired counters.