mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	WFI should set EPC to PC+4
This commit is contained in:
		
							parent
							
								
									fe53dd1683
								
							
						
					
					
						commit
						855d68afde
					
				@ -41,7 +41,7 @@ module csr #(parameter
 | 
			
		||||
  input  logic             StallE, StallM, StallW,
 | 
			
		||||
  input  logic [31:0]      InstrM, 
 | 
			
		||||
  input  logic [`XLEN-1:0] PCM, SrcAM,
 | 
			
		||||
  input  logic             CSRReadM, CSRWriteM, TrapM, MTrapM, STrapM, UTrapM, mretM, sretM, 
 | 
			
		||||
  input  logic             CSRReadM, CSRWriteM, TrapM, MTrapM, STrapM, UTrapM, mretM, sretM, wfiM,
 | 
			
		||||
  input  logic             TimerIntM, MExtIntM, SExtIntM, SwIntM,
 | 
			
		||||
  input  logic [63:0]      MTIME_CLINT, 
 | 
			
		||||
  input  logic             InstrValidM, FRegWriteM, LoadStallD,
 | 
			
		||||
@ -123,7 +123,7 @@ module csr #(parameter
 | 
			
		||||
 | 
			
		||||
  // write CSRs
 | 
			
		||||
  assign CSRAdrM = InstrM[31:20];
 | 
			
		||||
  assign UnalignedNextEPCM = TrapM ? PCM : CSRWriteValM;
 | 
			
		||||
  assign UnalignedNextEPCM = TrapM ? (wfiM ? PCM+4 : PCM) : CSRWriteValM;
 | 
			
		||||
  assign NextEPCM = `C_SUPPORTED ? {UnalignedNextEPCM[`XLEN-1:1], 1'b0} : {UnalignedNextEPCM[`XLEN-1:2], 2'b00}; // 3.1.15 alignment
 | 
			
		||||
  assign NextCauseM = TrapM ? CauseM : CSRWriteValM;
 | 
			
		||||
  assign NextMtvalM = TrapM ? NextFaultMtvalM : CSRWriteValM;
 | 
			
		||||
 | 
			
		||||
@ -140,7 +140,7 @@ module csrsr (
 | 
			
		||||
        STATUS_MIE <= #1 STATUS_MPIE;
 | 
			
		||||
        STATUS_MPIE <= #1 1;
 | 
			
		||||
        STATUS_MPP <= #1 `U_SUPPORTED ? `U_MODE : `M_MODE; // per spec, not sure why
 | 
			
		||||
        STATUS_MPRV_INT <= #1 0; // per 20210108 draft spec
 | 
			
		||||
        STATUS_MPRV_INT <= #1 (STATUS_MPP == `M_MODE & STATUS_MPRV_INT); //0; // per 20210108 draft spec
 | 
			
		||||
      end else if (sretM) begin
 | 
			
		||||
        STATUS_SIE <= #1 STATUS_SPIE;
 | 
			
		||||
        STATUS_SPIE <= #1 `S_SUPPORTED;
 | 
			
		||||
 | 
			
		||||
@ -167,7 +167,7 @@ module privileged (
 | 
			
		||||
          .FlushE, .FlushM, .FlushW,
 | 
			
		||||
          .StallE, .StallM, .StallW,
 | 
			
		||||
          .InstrM, .PCM, .SrcAM,
 | 
			
		||||
          .CSRReadM, .CSRWriteM, .TrapM, .MTrapM, .STrapM, .UTrapM, .mretM, .sretM, 
 | 
			
		||||
          .CSRReadM, .CSRWriteM, .TrapM, .MTrapM, .STrapM, .UTrapM, .mretM, .sretM, .wfiM,
 | 
			
		||||
          .TimerIntM, .MExtIntM, .SExtIntM, .SwIntM,
 | 
			
		||||
          .MTIME_CLINT, 
 | 
			
		||||
          .InstrValidM, .FRegWriteM, .LoadStallD,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user