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