xref: /XiangShan/src/main/scala/xiangshan/backend/fu/NewCSR/ExceptionBundle.scala (revision ca0aa83543eb9914b4fb4162ff18e90463149da3)
1039cdc35SXuan Hupackage xiangshan.backend.fu.NewCSR
2039cdc35SXuan Hu
3039cdc35SXuan Huimport xiangshan.backend.fu.NewCSR.CSRDefines.{
4039cdc35SXuan Hu  CSRRWField => RW,
5039cdc35SXuan Hu}
6039cdc35SXuan Hu
7039cdc35SXuan Huclass ExceptionBundle extends CSRBundle {
8039cdc35SXuan Hu  val EX_IAM    = RW(0)
9039cdc35SXuan Hu  val EX_IAF    = RW(1)
10039cdc35SXuan Hu  val EX_II     = RW(2)
11039cdc35SXuan Hu  val EX_BP     = RW(3)
12039cdc35SXuan Hu  val EX_LAM    = RW(4)
13039cdc35SXuan Hu  val EX_LAF    = RW(5)
14039cdc35SXuan Hu  val EX_SAM    = RW(6)
15039cdc35SXuan Hu  val EX_SAF    = RW(7)
16039cdc35SXuan Hu  val EX_UCALL  = RW(8)
17039cdc35SXuan Hu  val EX_HSCALL = RW(9)
18039cdc35SXuan Hu  val EX_VSCALL = RW(10)
19039cdc35SXuan Hu  val EX_MCALL  = RW(11)
20039cdc35SXuan Hu  val EX_IPF    = RW(12)
21039cdc35SXuan Hu  val EX_LPF    = RW(13)
22039cdc35SXuan Hu  // 14 Reserved
23039cdc35SXuan Hu  val EX_SPF    = RW(15)
24*ca0aa835SXuan Hu  // double trap
25*ca0aa835SXuan Hu  val EX_DBLTRP = RW(16)
26*ca0aa835SXuan Hu  // 17 Reserved
27*ca0aa835SXuan Hu  // software check
28*ca0aa835SXuan Hu  val EX_SWC    = RW(18)
29*ca0aa835SXuan Hu  // hardware error
30*ca0aa835SXuan Hu  val EX_HWE    = RW(19)
31039cdc35SXuan Hu  val EX_IGPF   = RW(20)
32039cdc35SXuan Hu  val EX_LGPF   = RW(21)
33039cdc35SXuan Hu  val EX_VI     = RW(22)
34039cdc35SXuan Hu  val EX_SGPF   = RW(23)
35039cdc35SXuan Hu  // 24-31 Designated for custom use
36039cdc35SXuan Hu  // 32-47 Reserved
37039cdc35SXuan Hu  // 48-63 Designated for custom use
38039cdc35SXuan Hu  // >= 64 Reserved
39ab449222SsinceforYy
40f60da58cSXuan Hu  def getAddressMisaligned = Seq(EX_IAM, EX_LAM, EX_SAM)
41f60da58cSXuan Hu
42f60da58cSXuan Hu  def getAccessFault = Seq(EX_IAF, EX_LAF, EX_SAF)
43f60da58cSXuan Hu
44f60da58cSXuan Hu  def getPageFault = Seq(EX_IPF, EX_LPF, EX_SPF)
45f60da58cSXuan Hu
46f60da58cSXuan Hu  def getGuestPageFault = Seq(EX_IGPF, EX_LGPF, EX_SGPF)
47f60da58cSXuan Hu
48bfac3305Speixiaokun  def getLSGuestPageFault = Seq(EX_LGPF, EX_SGPF)
49bfac3305Speixiaokun
50f60da58cSXuan Hu  def getFetchFault = Seq(EX_IAM, EX_IAF, EX_IPF)
51f60da58cSXuan Hu
52f60da58cSXuan Hu  def getLoadFault = Seq(EX_LAM, EX_LAF, EX_LPF)
53f60da58cSXuan Hu
54f60da58cSXuan Hu  def getStoreFault = Seq(EX_SAM, EX_SAF, EX_SPF)
55f60da58cSXuan Hu
56*ca0aa835SXuan Hu  def getALL = Seq(EX_SGPF, EX_VI, EX_LGPF, EX_IGPF, EX_HWE, EX_SWC, EX_DBLTRP, EX_SPF, EX_LPF, EX_IPF, EX_MCALL, EX_VSCALL,
57ab449222SsinceforYy    EX_HSCALL, EX_UCALL, EX_SAF, EX_SAM, EX_LAF, EX_LAM, EX_BP, EX_II, EX_IAF, EX_IAM)
58039cdc35SXuan Hu}
59