[Bug Report] Incorrect exception type of PMP violation during address translation
Created by: Phantom1003
Our co-simulation framework found that the exception type of address translation PMP violation is incorrect.
In the following test case, we let a non-leaf (level 2) PTE out of the PMP range. Next, we will perform a store operation with a special virtual address, during translation processor will try to access the PTE that does not match any PMP. cva6 throws a load access fault, while spike throws a store access fault.
[cva6] Exception @ 119000, PC: 000000008000036c, Cause: Load Access Fault,
[cva6] tval: 0000000080102008
[spike] core 0: 0x000000008000036c (0x00b52023) sw a1, 0(a0)
[spike] core 0: exception trap_store_access_fault, epc 0x000000008000036c
[spike] core 0: tval 0x0000000040201010
[spike] core 0: 0x0000000080000004 (0x34302f73) csrr t5, mtval
[error] WDATA SIM 0000000040201010, DUT 0000000080102008
[error] check board clear 30 error
According to riscv-privileged specification:
If accessing pte violates a PMA or PMP check, raise an access-fault exception corresponding to the original access type.
Hence, cva6 should throw a store access fault.
@ProjectDimlight
helps reproduce the problem