xref: /XiangShan/src/main/scala/xiangshan/backend/fu/NewCSR/ExceptionBundle.scala (revision b03c55a5df5dc8793cb44b42dd60141566e57e78)
1package xiangshan.backend.fu.NewCSR
2
3import xiangshan.backend.fu.NewCSR.CSRDefines.{
4  CSRRWField => RW,
5}
6
7class ExceptionBundle extends CSRBundle {
8  val EX_IAM    = RW(0)
9  val EX_IAF    = RW(1)
10  val EX_II     = RW(2)
11  val EX_BP     = RW(3)
12  val EX_LAM    = RW(4)
13  val EX_LAF    = RW(5)
14  val EX_SAM    = RW(6)
15  val EX_SAF    = RW(7)
16  val EX_UCALL  = RW(8)
17  val EX_HSCALL = RW(9)
18  val EX_VSCALL = RW(10)
19  val EX_MCALL  = RW(11)
20  val EX_IPF    = RW(12)
21  val EX_LPF    = RW(13)
22  // 14 Reserved
23  val EX_SPF    = RW(15)
24  // 16-19 Reserved
25  val EX_IGPF   = RW(20)
26  val EX_LGPF   = RW(21)
27  val EX_VI     = RW(22)
28  val EX_SGPF   = RW(23)
29  // 24-31 Designated for custom use
30  // 32-47 Reserved
31  // 48-63 Designated for custom use
32  // >= 64 Reserved
33
34  def getAddressMisaligned = Seq(EX_IAM, EX_LAM, EX_SAM)
35
36  def getAccessFault = Seq(EX_IAF, EX_LAF, EX_SAF)
37
38  def getPageFault = Seq(EX_IPF, EX_LPF, EX_SPF)
39
40  def getGuestPageFault = Seq(EX_IGPF, EX_LGPF, EX_SGPF)
41
42  def getLSGuestPageFault = Seq(EX_LGPF, EX_SGPF)
43
44  def getFetchFault = Seq(EX_IAM, EX_IAF, EX_IPF)
45
46  def getLoadFault = Seq(EX_LAM, EX_LAF, EX_LPF)
47
48  def getStoreFault = Seq(EX_SAM, EX_SAF, EX_SPF)
49
50  def getALL = Seq(EX_SGPF, EX_VI, EX_LGPF, EX_IGPF, EX_SPF, EX_LPF, EX_IPF, EX_MCALL, EX_VSCALL,
51    EX_HSCALL, EX_UCALL, EX_SAF, EX_SAM, EX_LAF, EX_LAM, EX_BP, EX_II, EX_IAF, EX_IAM)
52}
53