mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Check for legal SATP mode values
This commit is contained in:
		
							parent
							
								
									544df999d4
								
							
						
					
					
						commit
						aad722ffb1
					
				| @ -88,8 +88,12 @@ module csrs import cvw::*;  #(parameter cvw_t P) ( | ||||
|   assign WriteSEPCM       = STrapM | (CSRSWriteM & (CSRAdrM == SEPC)); | ||||
|   assign WriteSCAUSEM     = STrapM | (CSRSWriteM & (CSRAdrM == SCAUSE)); | ||||
|   assign WriteSTVALM      = STrapM | (CSRSWriteM & (CSRAdrM == STVAL)); | ||||
|   if(P.XLEN == 64) assign WriteSATPM       = CSRSWriteM & (CSRAdrM == SATP) & (PrivilegeModeW == P.M_MODE | ~STATUS_TVM) & (CSRWriteValM[63:60] != 4'hA); | ||||
|   else assign WriteSATPM       = CSRSWriteM & (CSRAdrM == SATP) & (PrivilegeModeW == P.M_MODE | ~STATUS_TVM); | ||||
|   if(P.XLEN == 64) begin | ||||
|     logic LegalSatpModeM; | ||||
|     assign LegalSatpModeM = P.VIRTMEM_SUPPORTED & (CSRWriteValM[63:60] == 0 | CSRWriteValM[63:60] == 8 | CSRWriteValM[63:60] == 9); // supports SV39 and 48
 | ||||
|     assign WriteSATPM     = CSRSWriteM & (CSRAdrM == SATP) & (PrivilegeModeW == P.M_MODE | ~STATUS_TVM) & LegalSatpModeM; | ||||
|   end else  // RV32
 | ||||
|     assign WriteSATPM     = CSRSWriteM & (CSRAdrM == SATP) & (PrivilegeModeW == P.M_MODE | ~STATUS_TVM) & P.VIRTMEM_SUPPORTED; | ||||
|   assign WriteSCOUNTERENM = CSRSWriteM & (CSRAdrM == SCOUNTEREN); | ||||
|   assign WriteSENVCFGM    = CSRSWriteM & (CSRAdrM == SENVCFG); | ||||
|   assign WriteSTIMECMPM   = CSRSWriteM & (CSRAdrM == STIMECMP) & STCE; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user