Sign-extend the depc CSR (#1209)
This commit is contained in:
		@@ -364,7 +364,7 @@ class CSRFile(perfEventSets: EventSets = new EventSets(Seq()))(implicit p: Param
 | 
			
		||||
 | 
			
		||||
  val debug_csrs = LinkedHashMap[Int,Bits](
 | 
			
		||||
    CSRs.dcsr -> reg_dcsr.asUInt,
 | 
			
		||||
    CSRs.dpc -> reg_dpc.asUInt,
 | 
			
		||||
    CSRs.dpc -> reg_dpc.sextTo(xLen),
 | 
			
		||||
    CSRs.dscratch -> reg_dscratch.asUInt)
 | 
			
		||||
 | 
			
		||||
  val fp_csrs = LinkedHashMap[Int,Bits](
 | 
			
		||||
@@ -526,7 +526,7 @@ class CSRFile(perfEventSets: EventSets = new EventSets(Seq()))(implicit p: Param
 | 
			
		||||
  assert(!io.singleStep || io.retire <= UInt(1))
 | 
			
		||||
  assert(!reg_singleStepped || io.retire === UInt(0))
 | 
			
		||||
 | 
			
		||||
  val epc = ~(~io.pc | (coreInstBytes-1))
 | 
			
		||||
  val epc = formEPC(io.pc)
 | 
			
		||||
  val write_badaddr = exception && cause.isOneOf(Causes.illegal_instruction, Causes.breakpoint,
 | 
			
		||||
    Causes.misaligned_load, Causes.misaligned_store,
 | 
			
		||||
    Causes.load_access, Causes.store_access, Causes.fetch_access,
 | 
			
		||||
@@ -546,7 +546,7 @@ class CSRFile(perfEventSets: EventSets = new EventSets(Seq()))(implicit p: Param
 | 
			
		||||
        new_prv := PRV.M
 | 
			
		||||
      }
 | 
			
		||||
    }.elsewhen (delegate) {
 | 
			
		||||
      reg_sepc := formEPC(epc)
 | 
			
		||||
      reg_sepc := epc
 | 
			
		||||
      reg_scause := cause
 | 
			
		||||
      xcause_dest := sCause
 | 
			
		||||
      reg_sbadaddr := badaddr_value
 | 
			
		||||
@@ -555,7 +555,7 @@ class CSRFile(perfEventSets: EventSets = new EventSets(Seq()))(implicit p: Param
 | 
			
		||||
      reg_mstatus.sie := false
 | 
			
		||||
      new_prv := PRV.S
 | 
			
		||||
    }.otherwise {
 | 
			
		||||
      reg_mepc := formEPC(epc)
 | 
			
		||||
      reg_mepc := epc
 | 
			
		||||
      reg_mcause := cause
 | 
			
		||||
      xcause_dest := mCause
 | 
			
		||||
      reg_mbadaddr := badaddr_value
 | 
			
		||||
@@ -687,7 +687,7 @@ class CSRFile(perfEventSets: EventSets = new EventSets(Seq()))(implicit p: Param
 | 
			
		||||
        if (usingUser) reg_dcsr.ebreaku := new_dcsr.ebreaku
 | 
			
		||||
        if (usingUser) reg_dcsr.prv := trimPrivilege(new_dcsr.prv)
 | 
			
		||||
      }
 | 
			
		||||
      when (decoded_addr(CSRs.dpc))      { reg_dpc := ~(~wdata | (coreInstBytes-1)) }
 | 
			
		||||
      when (decoded_addr(CSRs.dpc))      { reg_dpc := formEPC(wdata) }
 | 
			
		||||
      when (decoded_addr(CSRs.dscratch)) { reg_dscratch := wdata }
 | 
			
		||||
    }
 | 
			
		||||
    if (usingVM) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user