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