Fixed bug so AMO access faults only produce StoreAmoAccessFault and

not both LoadAccessFault adn StoreAmoAccessFault.
This commit is contained in:
Rose Thompson 2024-10-02 14:04:01 -05:00
parent e8928ed78a
commit 35693eb7cc
2 changed files with 2 additions and 2 deletions

View File

@ -75,6 +75,6 @@ module pmachecker import cvw::*; #(parameter cvw_t P) (
// Detect access faults
assign PMAAccessFault = SelRegions[0] & AccessRWXC | AtomicAccessM & ~AtomicAllowed;
assign PMAInstrAccessFaultF = ExecuteAccessF & PMAAccessFault;
assign PMALoadAccessFaultM = ReadAccessM & PMAAccessFault;
assign PMALoadAccessFaultM = ReadAccessM & ~WriteAccessM & PMAAccessFault;
assign PMAStoreAmoAccessFaultM = (WriteAccessM | (|CMOpM)) & PMAAccessFault;
endmodule

View File

@ -79,5 +79,5 @@ module pmpchecker import cvw::*; #(parameter cvw_t P) (
assign PMPInstrAccessFaultF = EnforcePMP & ExecuteAccessF & ~|(X & FirstMatch) ;
assign PMPStoreAmoAccessFaultM = (EnforcePMP & WriteAccessM & ~|(W & FirstMatch)) | PMPCMOAccessFault; // exclusion-tag: immu-pmpstoreamoaccessfault
assign PMPLoadAccessFaultM = EnforcePMP & ReadAccessM & ~|(R & FirstMatch) ;
assign PMPLoadAccessFaultM = EnforcePMP & ReadAccessM & ~WriteAccessM & ~|(R & FirstMatch) ;
endmodule