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
@@ -945,6 +945,76 @@ function xlen {
945
945
  }
946
946
  }
947
947
 
948
+ enum Endian {
949
+ Little 0
950
+ Big 1
951
+ }
952
+
953
+ function endianness {
954
+ returns Endian
955
+ description {
956
+ Returns the endianness for the effective privilege mode.
957
+ }
958
+ body {
959
+ if (effective_ldst_mode() == PrivilegeMode::M) {
960
+ if (CSR[mstatus].MBE == 1'b1) {
961
+ return Endian::Big;
962
+ } else {
963
+ return Endian::Little;
964
+ }
965
+ } else if (implemented?(ExtensionName::S) && effective_ldst_mode() == PrivilegeMode::S) {
966
+ if (CSR[mstatus].SBE == 1'b1) {
967
+ return Endian::Big;
968
+ } else {
969
+ return Endian::Little;
970
+ }
971
+ } else if (implemented?(ExtensionName::U) && effective_ldst_mode() == PrivilegeMode::U) {
972
+ if (CSR[mstatus].UBE == 1'b1) {
973
+ return Endian::Big;
974
+ } else {
975
+ return Endian::Little;
976
+ }
977
+ } else if (implemented?(ExtensionName::H)) {
978
+ if (effective_ldst_mode() == PrivilegeMode::VS) {
979
+ if(CSR[hstatus].VSBE == 1'b1) {
980
+ return Endian::Big;
981
+ } else {
982
+ return Endian::Little;
983
+ }
984
+ } else if (effective_ldst_mode() == PrivilegeMode::VU) {
985
+ if(CSR[vsstatus].UBE == 1'b1) {
986
+ return Endian::Big;
987
+ } else {
988
+ return Endian::Little;
989
+ }
990
+ } else {
991
+ unreachable();
992
+ }
993
+ } else {
994
+ unreachable();
995
+ }
996
+ }
997
+ }
998
+
999
+ function byte_swap {
1000
+ returns XReg
1001
+ arguments
1002
+ U32 LEN,
1003
+ XReg value
1004
+ description {
1005
+ Swaps bytes in register based on LEN.
1006
+ }
1007
+ body {
1008
+ XReg result;
1009
+
1010
+ result = 0;
1011
+ for (U32 i=0; i < LEN; i = i+8) {
1012
+ result[(i+7):i] = value[(LEN-1-i):(LEN-8-i)];
1013
+ }
1014
+ return result;
1015
+ }
1016
+ }
1017
+
948
1018
  function virtual_mode? {
949
1019
  returns Boolean
950
1020
  description {
@@ -2627,9 +2697,19 @@ function read_memory {
2627
2697
  body {
2628
2698
  Boolean aligned = is_naturally_aligned(LEN, virtual_address);
2629
2699
  XReg physical_address;
2700
+ XReg result;
2630
2701
 
2631
2702
  if (aligned) {
2632
- return read_memory_aligned(LEN, virtual_address, encoding, 1'b0, 1'b0);
2703
+ result = read_memory_aligned(LEN, virtual_address, encoding, 1'b0, 1'b0);
2704
+ if (LEN > 8 && endianness() == Endian::Big ) {
2705
+ U32 tmp;
2706
+ for (U32 i=0; i < LEN/2; i = i+8) {
2707
+ tmp = result[(i+7):i];
2708
+ result[(i+7):i] = result[(LEN-1-i):(LEN-8-i)];
2709
+ result[(LEN-1-i):(LEN-8-i)] = tmp[7:0];
2710
+ }
2711
+ }
2712
+ return result;
2633
2713
  }
2634
2714
 
2635
2715
  # access isn't naturally aligned, but it still might be atomic if this hart supports
@@ -2646,7 +2726,16 @@ function read_memory {
2646
2726
 
2647
2727
  if (misaligned_is_atomic?(LEN, physical_address)) {
2648
2728
  access_check(physical_address, LEN, virtual_address, MemoryOperation::Read, ExceptionCode::LoadAccessFault, effective_ldst_mode());
2649
- return read_physical_memory(LEN, physical_address);
2729
+ result = read_physical_memory(LEN, physical_address);
2730
+ if (LEN > 8 && endianness() == Endian::Big) {
2731
+ U32 tmp;
2732
+ for (U32 i=0; i < LEN/2; i = i+8) {
2733
+ tmp = result[(i+7):i];
2734
+ result[(i+7):i] = result[(LEN-1-i):(LEN-8-i)];
2735
+ result[(LEN-1-i):(LEN-8-i)] = tmp[7:0];
2736
+ }
2737
+ }
2738
+ return result;
2650
2739
  }
2651
2740
  }
2652
2741
 
@@ -2666,10 +2755,18 @@ function read_memory {
2666
2755
 
2667
2756
  # misaligned, must break into multiple reads
2668
2757
  if (MISALIGNED_SPLIT_STRATEGY == "sequential_bytes") {
2669
- XReg result = 0;
2758
+ result = 0;
2670
2759
  for (U32 I = 0; I < (LEN/8); I++) {
2671
2760
  result = result | (read_memory_aligned(8, virtual_address + I, encoding, 1'b0, 1'b0) `<< (8*I));
2672
2761
  }
2762
+ if(LEN > 8 && endianness() == Endian::Big) {
2763
+ U32 tmp;
2764
+ for (U32 i=0; i < LEN/2; i = i+8) {
2765
+ tmp = result[(i+7):i];
2766
+ result[(i+7):i] = result[(LEN-1-i):(LEN-8-i)];
2767
+ result[(LEN-1-i):(LEN-8-i)] = tmp[7:0];
2768
+ }
2769
+ }
2673
2770
  return result;
2674
2771
  } else if (MISALIGNED_SPLIT_STRATEGY == "custom") {
2675
2772
  unpredictable("An implementation is free to break a misaligned access any way, leading to unpredictable behavior when any part of the misaligned access causes an exception");
@@ -2972,10 +3069,16 @@ function amo {
2972
3069
  raise (ExceptionCode::StoreAmoAddressMisaligned, mode(), virtual_address);
2973
3070
  }
2974
3071
 
2975
- if (N == 32) {
3072
+ if (N == 8) {
3073
+ return atomic_read_modify_write_8(physical_address, value, op);
3074
+ } else if (N == 16) {
3075
+ return atomic_read_modify_write_16(physical_address, value, op);
3076
+ } else if (N == 32) {
2976
3077
  return atomic_read_modify_write_32(physical_address, value, op);
2977
- } else {
3078
+ } else if (N == 64) {
2978
3079
  return atomic_read_modify_write_64(physical_address, value, op);
3080
+ } else {
3081
+ unreachable();
2979
3082
  }
2980
3083
 
2981
3084
  }
@@ -3033,6 +3136,15 @@ function write_memory {
3033
3136
  Boolean aligned = is_naturally_aligned(LEN, virtual_address);
3034
3137
  XReg physical_address;
3035
3138
 
3139
+ if(LEN > 8 && endianness() == Endian::Big) {
3140
+ U32 tmp;
3141
+ for (U32 i=0; i < LEN/2; i = i+8) {
3142
+ tmp = value[(i+7):i];
3143
+ value[(i+7):i] = value[(LEN-1-i):(LEN-8-i)];
3144
+ value[(LEN-1-i):(LEN-8-i)] = tmp[7:0];
3145
+ }
3146
+ }
3147
+
3036
3148
  if (aligned) {
3037
3149
  write_memory_aligned(LEN, virtual_address, value, encoding, 1'b0, 1'b0);
3038
3150
  return;
@@ -0,0 +1,29 @@
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/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: HCONTEXT_IMPLEMENTED
9
+ description: |
10
+ Specifies if the hcontext CSR is implemented
11
+ long_name: hcontext CSR is implemented
12
+ schema:
13
+ type: boolean
14
+ definedBy:
15
+ allOf:
16
+ - extension:
17
+ name: Sdtrig
18
+ - extension:
19
+ name: H
20
+ requirements:
21
+ if:
22
+ param:
23
+ name: HCONTEXT_IMPLEMENTED
24
+ equal: true
25
+ then:
26
+ param:
27
+ name: MCONTEXT_IMPLEMENTED
28
+ equal: true
29
+ reason: HCONTEXT cannot exist without MCONTEXT
@@ -5,10 +5,10 @@
5
5
 
6
6
  $schema: param_schema.json#
7
7
  kind: parameter
8
- name: MCONTEXT_AVAILABLE
8
+ name: MCONTEXT_IMPLEMENTED
9
9
  description: |
10
- Specifies if MCONTEXT is available
11
- long_name: TODO
10
+ Specifies if the mcontext CSR is implemented
11
+ long_name: mcontext CSR is implemented
12
12
  schema:
13
13
  type: boolean
14
14
  definedBy:
@@ -0,0 +1,121 @@
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/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: MEDELEG_DELEGATABLE
9
+ description: |
10
+ Indicates which synchronous exceptions can be delegated via `medeleg`.
11
+
12
+ Entry _i_ corresponds to `medeleg` bit _i_, whose index is the exception code reported in `mcause`.
13
+ When an entry is true, the corresponding `medeleg` bit is writable.
14
+ When an entry is false, the corresponding `medeleg` bit is read-only zero.
15
+
16
+ An implementation may support any subset of the delegatable exceptions,
17
+ but no bit of `medeleg` may be read-only one.
18
+
19
+ `MEDELEG_DELEGATABLE[11]` (environment call from M-mode) and
20
+ `MEDELEG_DELEGATABLE[16]` (double trap) must always be false.
21
+ long_name: Exceptions that can be delegated through medeleg
22
+ schema:
23
+ type: array
24
+ items:
25
+ type: boolean
26
+ maxItems: 64
27
+ minItems: 64
28
+ definedBy:
29
+ extension:
30
+ name: S
31
+ requirements:
32
+ allOf:
33
+ # medeleg[11] (ECALL from M-mode) and medeleg[16] (double trap) are read-only zero
34
+ - param:
35
+ allOf:
36
+ - name: MEDELEG_DELEGATABLE
37
+ index: 11
38
+ equal: false
39
+ - name: MEDELEG_DELEGATABLE
40
+ index: 16
41
+ equal: false
42
+ # Reserved exception codes (14, 17, 32-47) cannot be delegated
43
+ - param:
44
+ allOf:
45
+ - name: MEDELEG_DELEGATABLE
46
+ index: 14
47
+ equal: false
48
+ - name: MEDELEG_DELEGATABLE
49
+ index: 17
50
+ equal: false
51
+ - name: MEDELEG_DELEGATABLE
52
+ index: 32
53
+ equal: false
54
+ - name: MEDELEG_DELEGATABLE
55
+ index: 33
56
+ equal: false
57
+ - name: MEDELEG_DELEGATABLE
58
+ index: 34
59
+ equal: false
60
+ - name: MEDELEG_DELEGATABLE
61
+ index: 35
62
+ equal: false
63
+ - name: MEDELEG_DELEGATABLE
64
+ index: 36
65
+ equal: false
66
+ - name: MEDELEG_DELEGATABLE
67
+ index: 37
68
+ equal: false
69
+ - name: MEDELEG_DELEGATABLE
70
+ index: 38
71
+ equal: false
72
+ - name: MEDELEG_DELEGATABLE
73
+ index: 39
74
+ equal: false
75
+ - name: MEDELEG_DELEGATABLE
76
+ index: 40
77
+ equal: false
78
+ - name: MEDELEG_DELEGATABLE
79
+ index: 41
80
+ equal: false
81
+ - name: MEDELEG_DELEGATABLE
82
+ index: 42
83
+ equal: false
84
+ - name: MEDELEG_DELEGATABLE
85
+ index: 43
86
+ equal: false
87
+ - name: MEDELEG_DELEGATABLE
88
+ index: 44
89
+ equal: false
90
+ - name: MEDELEG_DELEGATABLE
91
+ index: 45
92
+ equal: false
93
+ - name: MEDELEG_DELEGATABLE
94
+ index: 46
95
+ equal: false
96
+ - name: MEDELEG_DELEGATABLE
97
+ index: 47
98
+ equal: false
99
+ # Exception codes 10 and 20-23 are defined by H
100
+ - if:
101
+ not:
102
+ extension:
103
+ name: H
104
+ then:
105
+ param:
106
+ allOf:
107
+ - name: MEDELEG_DELEGATABLE
108
+ index: 10
109
+ equal: false
110
+ - name: MEDELEG_DELEGATABLE
111
+ index: 20
112
+ equal: false
113
+ - name: MEDELEG_DELEGATABLE
114
+ index: 21
115
+ equal: false
116
+ - name: MEDELEG_DELEGATABLE
117
+ index: 22
118
+ equal: false
119
+ - name: MEDELEG_DELEGATABLE
120
+ index: 23
121
+ equal: false
@@ -13,7 +13,7 @@ description: |
13
13
 
14
14
  true::
15
15
  Machine-level external interrupts are implemented.
16
- `mie.MEIE` and `mideleg.MEI` are writable.
16
+ `mie.MEIE` is writable, and `mideleg.MEI` is writable if `MIDELEG_DELEGATABLE[11]` is true.
17
17
 
18
18
  false::
19
19
  Machine-level external interrupts are not implemented.
@@ -0,0 +1,177 @@
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/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: MIDELEG_DELEGATABLE
9
+ description: |
10
+ Indicates which interrupts can be delegated via `mideleg`.
11
+
12
+ Entry _i_ corresponds to `mideleg` bit _i_, which uses the same bit layout as `mip`.
13
+ When an entry is true, the corresponding interrupt can be delegated: the `mideleg` bit is writable,
14
+ except for bits that are always delegated, which are read-only one.
15
+ When an entry is false, the corresponding `mideleg` bit is read-only zero.
16
+
17
+ An unimplemented interrupt cannot be delegated, i.e., if `STI_INTR_IMPL` is false,
18
+ `MIDELEG_DELEGATABLE[5]` must be false.
19
+
20
+ When the H extension is implemented, VSSI, VSTI, and VSEI are always delegated to HS-mode,
21
+ so `MIDELEG_DELEGATABLE[2]`, `[6]`, and `[10]` must be true.
22
+ SGEI is also always delegated when any guest external interrupts are implemented
23
+ (`NUM_EXTERNAL_GUEST_INTERRUPTS` is nonzero), so `MIDELEG_DELEGATABLE[12]` must then be true;
24
+ otherwise it must be false.
25
+ When H is not implemented, all four must be false.
26
+ long_name: Interrupts that can be delegated through mideleg
27
+ schema:
28
+ type: array
29
+ items:
30
+ type: boolean
31
+ maxItems: 64
32
+ minItems: 64
33
+ definedBy:
34
+ extension:
35
+ name: S
36
+ requirements:
37
+ allOf:
38
+ # Reserved interrupt codes (0, 4, 8, 14, 15) cannot be delegated
39
+ - param:
40
+ allOf:
41
+ - name: MIDELEG_DELEGATABLE
42
+ index: 0
43
+ equal: false
44
+ - name: MIDELEG_DELEGATABLE
45
+ index: 4
46
+ equal: false
47
+ - name: MIDELEG_DELEGATABLE
48
+ index: 8
49
+ equal: false
50
+ - name: MIDELEG_DELEGATABLE
51
+ index: 14
52
+ equal: false
53
+ - name: MIDELEG_DELEGATABLE
54
+ index: 15
55
+ equal: false
56
+ # An unimplemented interrupt cannot be delegated
57
+ - if:
58
+ param:
59
+ name: MIDELEG_DELEGATABLE
60
+ index: 1
61
+ equal: true
62
+ then:
63
+ param:
64
+ name: SSI_INTR_IMPL
65
+ equal: true
66
+ - if:
67
+ param:
68
+ name: MIDELEG_DELEGATABLE
69
+ index: 3
70
+ equal: true
71
+ then:
72
+ param:
73
+ name: MSI_INTR_IMPL
74
+ equal: true
75
+ - if:
76
+ param:
77
+ name: MIDELEG_DELEGATABLE
78
+ index: 5
79
+ equal: true
80
+ then:
81
+ param:
82
+ name: STI_INTR_IMPL
83
+ equal: true
84
+ - if:
85
+ param:
86
+ name: MIDELEG_DELEGATABLE
87
+ index: 7
88
+ equal: true
89
+ then:
90
+ param:
91
+ name: MTI_INTR_IMPL
92
+ equal: true
93
+ - if:
94
+ param:
95
+ name: MIDELEG_DELEGATABLE
96
+ index: 9
97
+ equal: true
98
+ then:
99
+ param:
100
+ name: SEI_INTR_IMPL
101
+ equal: true
102
+ - if:
103
+ param:
104
+ name: MIDELEG_DELEGATABLE
105
+ index: 11
106
+ equal: true
107
+ then:
108
+ param:
109
+ name: MEI_INTR_IMPL
110
+ equal: true
111
+ # LCOFI (bit 13) is defined by Sscofpmf
112
+ - if:
113
+ not:
114
+ extension:
115
+ name: Sscofpmf
116
+ then:
117
+ param:
118
+ name: MIDELEG_DELEGATABLE
119
+ index: 13
120
+ equal: false
121
+ # VSSI, VSTI, and VSEI are always delegated to HS-mode when H is implemented
122
+ - if:
123
+ extension:
124
+ name: H
125
+ then:
126
+ allOf:
127
+ # VSSI, VSTI, and VSEI are always delegated to HS-mode when H is implemented
128
+ - param:
129
+ allOf:
130
+ - name: MIDELEG_DELEGATABLE
131
+ index: 2
132
+ equal: true
133
+ - name: MIDELEG_DELEGATABLE
134
+ index: 6
135
+ equal: true
136
+ - name: MIDELEG_DELEGATABLE
137
+ index: 10
138
+ equal: true
139
+ # SGEI is always delegated to HS-mode when any guest external interrupts are implemented (GEILEN nonzero)
140
+ - if:
141
+ not:
142
+ param:
143
+ name: NUM_EXTERNAL_GUEST_INTERRUPTS
144
+ equal: 0
145
+ then:
146
+ param:
147
+ name: MIDELEG_DELEGATABLE
148
+ index: 12
149
+ equal: true
150
+ - if:
151
+ param:
152
+ name: NUM_EXTERNAL_GUEST_INTERRUPTS
153
+ equal: 0
154
+ then:
155
+ param:
156
+ name: MIDELEG_DELEGATABLE
157
+ index: 12
158
+ equal: false
159
+ - if:
160
+ not:
161
+ extension:
162
+ name: H
163
+ then:
164
+ param:
165
+ allOf:
166
+ - name: MIDELEG_DELEGATABLE
167
+ index: 2
168
+ equal: false
169
+ - name: MIDELEG_DELEGATABLE
170
+ index: 6
171
+ equal: false
172
+ - name: MIDELEG_DELEGATABLE
173
+ index: 10
174
+ equal: false
175
+ - name: MIDELEG_DELEGATABLE
176
+ index: 12
177
+ equal: false
@@ -13,7 +13,7 @@ description: |
13
13
 
14
14
  true::
15
15
  Machine-level software interrupts are implemented.
16
- `mie.MSIE` and `mideleg.MSI` are writable.
16
+ `mie.MSIE` is writable, and `mideleg.MSI` is writable if `MIDELEG_DELEGATABLE[3]` is true.
17
17
 
18
18
  false::
19
19
  Machine-level software interrupts are not implemented.
@@ -13,7 +13,7 @@ description: |
13
13
 
14
14
  true::
15
15
  Machine-level timer interrupts are implemented.
16
- `mie.MTIE`, `mideleg.MTI`, and `mtimecmp` are writable.
16
+ `mie.MTIE` and `mtimecmp` are writable, and `mideleg.MTI` is writable if `MIDELEG_DELEGATABLE[7]` is true.
17
17
 
18
18
  false::
19
19
  Machine-level timer interrupts are not implemented.
@@ -0,0 +1,18 @@
1
+ # Copyright (C) 2026 Harvey Mudd College
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: SCONTEXT_IMPLEMENTED
9
+ description: |
10
+ Specifies if the scontext CSR is implemented
11
+ long_name: scontext CSR is implemented
12
+ schema:
13
+ type: boolean
14
+ definedBy:
15
+ extension:
16
+ allOf:
17
+ - name: Sdtrig
18
+ - name: S
@@ -0,0 +1,45 @@
1
+ # Copyright (C) 2026 Harvey Mudd College
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: SDTRIG_BREAKPOINT_REENTRANCY
9
+ description: |
10
+ How the hart prevents triggers with action=0 (breakpoint exception) from re-firing
11
+ inside their own handler (Debug spec 1.0, Sdtrig "Native Triggers").
12
+
13
+ * No_reentrancy_support: no specific support for reentrancy.
14
+ * Use_interrupt_enables: triggers with action=0 do not match or fire in M-mode while
15
+ mstatus.MIE is 0 (and likewise S/VS-mode with sstatus.SIE / vsstatus.SIE when delegated).
16
+ * Use_tcontrol: tcontrol.mte and tcontrol.mpte are implemented, and medeleg[3] is hard-wired to 0.
17
+ long_name: Breakpoint reentrancy mechanism
18
+ schema:
19
+ type: string
20
+ enum:
21
+ - No_reentrancy_support
22
+ - Use_interrupt_enables
23
+ - Use_tcontrol
24
+ requirements:
25
+ if:
26
+ param:
27
+ name: SDTRIG_BREAKPOINT_REENTRANCY
28
+ equal: Use_tcontrol
29
+ then:
30
+ allOf:
31
+ - param:
32
+ name: TCONTROL_IMPLEMENTED
33
+ equal: true
34
+ reason: The Use_tcontrol mechanism requires the tcontrol CSR.
35
+ - if:
36
+ extension:
37
+ name: S
38
+ then:
39
+ param:
40
+ name: MEDELEG_DELEGATABLE
41
+ index: 3
42
+ equal: false
43
+ definedBy:
44
+ extension:
45
+ name: Sdtrig
@@ -0,0 +1,37 @@
1
+ # Copyright (C) 2026 Harvey Mudd College
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: SDTRIG_ETRIGGER_SUPPORTED_EXCEPTIONS
9
+ description: |
10
+ The set of exception codes (mcause Exception Code) that etrigger can be enabled for, i.e. the bits of
11
+ etrigger.tdata2 that are writable as 1.
12
+
13
+ Debug spec 1.0, etrigger: "Hardware may support only a subset of exceptions."
14
+ long_name: List of exceptions supported by etrigger
15
+ schema:
16
+ type: array
17
+ items:
18
+ type: integer
19
+ minimum: 0
20
+ maximum: 63
21
+ maxItems: 64
22
+ minItems: 1
23
+ uniqueItems: true
24
+ requirements:
25
+ idl(): |
26
+ for (U32 i = 32; i < 64; i++) {
27
+ (MXLEN == 32) -> !$array_includes?(SDTRIG_ETRIGGER_SUPPORTED_EXCEPTIONS, i);
28
+ }
29
+ reason: etrigger.tdata2 is XLEN bits wide, so codes above 31 cannot be selected when XLEN is 32.
30
+ definedBy:
31
+ allOf:
32
+ - extension:
33
+ name: Sdtrig
34
+ - param:
35
+ name: SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS
36
+ includes: true
37
+ reason: Only relevant if at least one trigger supports etrigger.
@@ -0,0 +1,25 @@
1
+ # Copyright (C) 2026 Harvey Mudd College
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS
9
+ description: |
10
+ Indicates which triggers support etrigger. Entry i is true if the trigger selected by
11
+ tselect=i supports etrigger. Must have exactly SDTRIG_NUM_TRIGGERS entries.
12
+ long_name: List of triggers that support etrigger
13
+ schema:
14
+ type: array
15
+ items:
16
+ type: boolean
17
+ maxItems: 18446744073709551616 # 2**64, max tselect values (2**XLEN)
18
+ minItems: 0
19
+ definedBy:
20
+ extension:
21
+ name: Sdtrig
22
+ # TODO: uncomment when we have support for parameter comparison to other parameters
23
+ # requirements:
24
+ # idl(): |
25
+ # -> $array_size(SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS) == SDTRIG_NUM_TRIGGERS;
@@ -0,0 +1,23 @@
1
+ # Copyright (C) 2026 Harvey Mudd College
2
+ # SPDX-License-Identifier: BSD-3-Clause-Clear
3
+
4
+ # yaml-language-server: $schema=../../../schemas/param_schema.json
5
+
6
+ $schema: param_schema.json#
7
+ kind: parameter
8
+ name: SDTRIG_ICOUNT_COUNT_HARDWIRED_1
9
+ description: |
10
+ If true then icount.count is hard-wired to 1 for all icount triggers: it does not become 0 when the
11
+ trigger matches, and icount.m, icount.s, icount.u, icount.vs, and icount.vu are cleared when the trigger fires.
12
+ If false, icount.count is writable and becomes 0 when the trigger matches with a count of 1.
13
+ long_name: icount.COUNT is hard-wired to 1
14
+ schema:
15
+ type: boolean
16
+ definedBy:
17
+ allOf:
18
+ - extension:
19
+ name: Sdtrig
20
+ - param:
21
+ name: SDTRIG_ICOUNT_SUPPORTED_TRIGGERS
22
+ includes: true
23
+ reason: Only relevant if at least one trigger supports icount.