cvw/tests/coverage/pmpcbo.S

32 lines
848 B
ArmAsm

# pmpcbo.S
# David_Harris@hmc.edu 1/21/24
# Cover PMP checks of cache management instructions
#include "WALLY-init-lib.h"
main:
# set up PMP so user and supervisor mode can access partial address space
li t0, 0x080F;
# li t0, 0x0808;
csrw pmpcfg0, t0 # configure PMP0 to TOR RWX and PMP1 to TOR no access
li t0, 0x2003FFFF
li t1, 0xFFFFFFFF
csrw pmpaddr0, t0 # configure PMP0 top of range to 0x800FFFFF to allow all 32-bit addresses
csrw pmpaddr1, t1 # configure PMP1 top of range to 0xFFFFFFFF to prohibit accesses above
# enable cbo instructions
li t0, 0xF0
csrw menvcfg, t0
csrw senvcfg, t0
# switch to supervisor mode
li a0, 1
ecall
# cbo instructions to PMP-forbidded address
li a0, 0x81000000 # forbidden address
cbo.zero (a0)
cbo.inval (a0)
j done