From 6c1383e2a055433b42c755199b09256fa86e390e Mon Sep 17 00:00:00 2001 From: Kip Macsai-Goren Date: Tue, 15 Feb 2022 19:48:08 +0000 Subject: [PATCH] added CSR permission and minfor to 32 bit tests --- pipelined/testbench/tests.vh | 4 +- .../rv32i_m/privilege/Makefrag | 5 +- ...WALLY-CSR-permission-s-01.reference_output | 1024 +++++++++++++++++ ...WALLY-CSR-permission-u-01.reference_output | 1024 +++++++++++++++++ .../WALLY-minfo-01.reference_output | 1024 +++++++++++++++++ .../privilege/src/WALLY-CSR-permission-s-01.S | 157 +++ .../privilege/src/WALLY-CSR-permission-u-01.S | 173 +++ .../rv32i_m/privilege/src/WALLY-minfo-01.S | 39 + 8 files changed, 3448 insertions(+), 2 deletions(-) create mode 100644 tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-s-01.reference_output create mode 100644 tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-u-01.reference_output create mode 100644 tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-minfo-01.reference_output create mode 100644 tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-s-01.S create mode 100644 tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-u-01.S create mode 100644 tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-minfo-01.S diff --git a/pipelined/testbench/tests.vh b/pipelined/testbench/tests.vh index 1b5bb5731..0a2aa706d 100644 --- a/pipelined/testbench/tests.vh +++ b/pipelined/testbench/tests.vh @@ -1550,7 +1550,9 @@ string wally32i[] = '{ `WALLYTEST, "rv32i_m/privilege/WALLY-MMU-SV32", "4080", "rv32i_m/privilege/WALLY-PMP", "4080", - "rv32i_m/privilege/WALLY-PMA", "4080" + "rv32i_m/privilege/WALLY-CSR-permission-s-01", "5080", + "rv32i_m/privilege/WALLY-CSR-permission-u-01", "5080", + "rv32i_m/privilege/WALLY-minfo-01", "4080" }; string wally32periph[] = '{ diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag index d1e1ac4b7..abd1d1211 100644 --- a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/Makefrag @@ -29,7 +29,10 @@ rv32i_sc_tests = \ WALLY-MMU-SV32 \ - WALLY-PMP + WALLY-PMP \ + WALLY-CSR-permission-s-01 \ + WALLY-CSR-permission-u-01 \ + WALLY-minfo-01 target_tests_nosim = WALLY-PMA \ diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-s-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-s-01.reference_output new file mode 100644 index 000000000..eb954dbda --- /dev/null +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-s-01.reference_output @@ -0,0 +1,1024 @@ +0000000b # Test 5.2.3.6: ecall from going to S mode from M mode +00000002 # S mode write to mvendorid with illegal instruction +00000002 # S mode read from mvendorid with illegal instruction +00000bad +00000002 # S mode write to marchid with illegal instruction +00000002 # S mode read from marchid with illegal instruction +00000bad +00000002 # S mode write to mimpid with illegal instruction +00000002 # S mode read from mimpid with illegal instruction +00000bad +00000002 # S mode write to mhartid with illegal instruction +00000002 # S mode read from mhartid with illegal instruction +00000bad +00000002 # S mode write to mstatus with illegal instruction +00000002 # S mode read from mstatus with illegal instruction +00000bad +00000002 # S mode write to misa with illegal instruction +00000002 # S mode read from misa with illegal instruction +00000bad +00000002 # S mode write to medeleg with illegal instruction +00000002 # S mode read from medeleg with illegal instruction +00000bad +00000002 # S mode write to mideleg with illegal instruction +00000002 # S mode read from mideleg with illegal instruction +00000bad +00000002 # S mode write to mie with illegal instruction +00000002 # S mode read from mie with illegal instruction +00000bad +00000002 # S mode write to mtvec with illegal instruction +00000002 # S mode read from mtvec with illegal instruction +00000bad +00000002 # S mode write to mcounteren with illegal instruction +00000002 # S mode read from mcounteren with illegal instruction +00000bad +00000002 # S mode write to mscratch with illegal instruction +00000002 # S mode read from mscratch with illegal instruction +00000bad +00000002 # S mode write to mepc with illegal instruction +00000002 # S mode read from mepc with illegal instruction +00000bad +00000002 # S mode write to mcause with illegal instruction +00000002 # S mode read from mcause with illegal instruction +00000bad +00000002 # S mode write to mtval with illegal instruction +00000002 # S mode read from mtval with illegal instruction +00000bad +00000002 # S mode write to mip with illegal instruction +00000002 # S mode read from mip with illegal instruction +00000bad +00000002 # S mode write to pmpcfg0 with illegal instruction +00000002 # S mode read from pmpcfg0 with illegal instruction +00000bad +00000002 # S mode write to pmpcfg2 with illegal instruction +00000002 # S mode read from pmpcfg2 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr0 with illegal instruction +00000002 # S mode read from pmpaddr0 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr1 with illegal instruction +00000002 # S mode read from pmpaddr1 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr2 with illegal instruction +00000002 # S mode read from pmpaddr2 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr3 with illegal instruction +00000002 # S mode read from pmpaddr3 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr4 with illegal instruction +00000002 # S mode read from pmpaddr4 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr5 with illegal instruction +00000002 # S mode read from pmpaddr5 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr6 with illegal instruction +00000002 # S mode read from pmpaddr6 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr7 with illegal instruction +00000002 # S mode read from pmpaddr7 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr8 with illegal instruction +00000002 # S mode read from pmpaddr8 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr9 with illegal instruction +00000002 # S mode read from pmpaddr9 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr10 with illegal instruction +00000002 # S mode read from pmpaddr10 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr11 with illegal instruction +00000002 # S mode read from pmpaddr11 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr12 with illegal instruction +00000002 # S mode read from pmpaddr12 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr13 with illegal instruction +00000002 # S mode read from pmpaddr13 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr14 with illegal instruction +00000002 # S mode read from pmpaddr14 with illegal instruction +00000bad +00000002 # S mode write to pmpaddr15 with illegal instruction +00000002 # S mode read from pmpaddr15 with illegal instruction +00000bad +00000002 # S mode write to mcycle with illegal instruction +00000002 # S mode read from mcycle with illegal instruction +00000bad +00000002 # S mode write to minstret with illegal instruction +00000002 # S mode read from minstret with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter3 with illegal instruction +00000002 # S mode read from mhpmcounter3 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter4 with illegal instruction +00000002 # S mode read from mhpmcounter4 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter5 with illegal instruction +00000002 # S mode read from mhpmcounter5 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter6 with illegal instruction +00000002 # S mode read from mhpmcounter6 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter7 with illegal instruction +00000002 # S mode read from mhpmcounter7 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter8 with illegal instruction +00000002 # S mode read from mhpmcounter8 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter9 with illegal instruction +00000002 # S mode read from mhpmcounter9 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter10 with illegal instruction +00000002 # S mode read from mhpmcounter10 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter11 with illegal instruction +00000002 # S mode read from mhpmcounter11 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter12 with illegal instruction +00000002 # S mode read from mhpmcounter12 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter13 with illegal instruction +00000002 # S mode read from mhpmcounter13 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter14 with illegal instruction +00000002 # S mode read from mhpmcounter14 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter15 with illegal instruction +00000002 # S mode read from mhpmcounter15 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter16 with illegal instruction +00000002 # S mode read from mhpmcounter16 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter17 with illegal instruction +00000002 # S mode read from mhpmcounter17 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter18 with illegal instruction +00000002 # S mode read from mhpmcounter18 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter19 with illegal instruction +00000002 # S mode read from mhpmcounter19 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter20 with illegal instruction +00000002 # S mode read from mhpmcounter20 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter21 with illegal instruction +00000002 # S mode read from mhpmcounter21 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter22 with illegal instruction +00000002 # S mode read from mhpmcounter22 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter23 with illegal instruction +00000002 # S mode read from mhpmcounter23 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter24 with illegal instruction +00000002 # S mode read from mhpmcounter24 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter25 with illegal instruction +00000002 # S mode read from mhpmcounter25 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter26 with illegal instruction +00000002 # S mode read from mhpmcounter26 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter27 with illegal instruction +00000002 # S mode read from mhpmcounter27 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter28 with illegal instruction +00000002 # S mode read from mhpmcounter28 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter29 with illegal instruction +00000002 # S mode read from mhpmcounter29 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter30 with illegal instruction +00000002 # S mode read from mhpmcounter30 with illegal instruction +00000bad +00000002 # S mode write to mhpmcounter31 with illegal instruction +00000002 # S mode read from mhpmcounter31 with illegal instruction +00000bad +00000002 # S mode write to mcountinhibit with illegal instruction +00000002 # S mode read from mcountinhibit with illegal instruction +00000bad +00000002 # S mode write to mhpmevent3 with illegal instruction +00000002 # S mode read from mhpmevent3 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent4 with illegal instruction +00000002 # S mode read from mhpmevent4 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent5 with illegal instruction +00000002 # S mode read from mhpmevent5 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent6 with illegal instruction +00000002 # S mode read from mhpmevent6 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent7 with illegal instruction +00000002 # S mode read from mhpmevent7 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent8 with illegal instruction +00000002 # S mode read from mhpmevent8 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent9 with illegal instruction +00000002 # S mode read from mhpmevent9 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent10 with illegal instruction +00000002 # S mode read from mhpmevent10 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent11 with illegal instruction +00000002 # S mode read from mhpmevent11 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent12 with illegal instruction +00000002 # S mode read from mhpmevent12 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent13 with illegal instruction +00000002 # S mode read from mhpmevent13 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent14 with illegal instruction +00000002 # S mode read from mhpmevent14 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent15 with illegal instruction +00000002 # S mode read from mhpmevent15 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent16 with illegal instruction +00000002 # S mode read from mhpmevent16 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent17 with illegal instruction +00000002 # S mode read from mhpmevent17 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent18 with illegal instruction +00000002 # S mode read from mhpmevent18 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent19 with illegal instruction +00000002 # S mode read from mhpmevent19 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent20 with illegal instruction +00000002 # S mode read from mhpmevent20 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent21 with illegal instruction +00000002 # S mode read from mhpmevent21 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent22 with illegal instruction +00000002 # S mode read from mhpmevent22 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent23 with illegal instruction +00000002 # S mode read from mhpmevent23 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent24 with illegal instruction +00000002 # S mode read from mhpmevent24 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent25 with illegal instruction +00000002 # S mode read from mhpmevent25 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent26 with illegal instruction +00000002 # S mode read from mhpmevent26 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent27 with illegal instruction +00000002 # S mode read from mhpmevent27 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent28 with illegal instruction +00000002 # S mode read from mhpmevent28 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent29 with illegal instruction +00000002 # S mode read from mhpmevent29 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent30 with illegal instruction +00000002 # S mode read from mhpmevent30 with illegal instruction +00000bad +00000002 # S mode write to mhpmevent31 with illegal instruction +00000002 # S mode read from mhpmevent31 with illegal instruction +00000bad +00000009 # ecall from terminating tess from S mode +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-u-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-u-01.reference_output new file mode 100644 index 000000000..8069d08a9 --- /dev/null +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-CSR-permission-u-01.reference_output @@ -0,0 +1,1024 @@ +0000000b # Test 5.2.3.6: ecall from going to U mode from M mode +00000002 # U mode write to sstatus with illegal instruction +00000002 # U mode read from sstatus with illegal instruction +00000bad +00000002 # U mode write to sie with illegal instruction +00000002 # U mode read from sie with illegal instruction +00000bad +00000002 # U mode write to stvec with illegal instruction +00000002 # U mode read from stvec with illegal instruction +00000bad +00000002 # U mode write to scounteren with illegal instruction +00000002 # U mode read from scounteren with illegal instruction +00000bad +00000002 # U mode write to sscratch with illegal instruction +00000002 # U mode read from sscratch with illegal instruction +00000bad +00000002 # U mode write to sepc with illegal instruction +00000002 # U mode read from sepc with illegal instruction +00000bad +00000002 # U mode write to scause with illegal instruction +00000002 # U mode read from scause with illegal instruction +00000bad +00000002 # U mode write to stval with illegal instruction +00000002 # U mode read from stval with illegal instruction +00000bad +00000002 # U mode write to sip with illegal instruction +00000002 # U mode read from sip with illegal instruction +00000bad +00000002 # U mode write to satp with illegal instruction +00000002 # U mode read from satp with illegal instruction +00000bad +00000002 # U mode write to mvendorid with illegal instruction +00000002 # U mode read from mvendorid with illegal instruction +00000bad +00000002 # U mode write to marchid with illegal instruction +00000002 # U mode read from marchid with illegal instruction +00000bad +00000002 # U mode write to mimpid with illegal instruction +00000002 # U mode read from mimpid with illegal instruction +00000bad +00000002 # U mode write to mhartid with illegal instruction +00000002 # U mode read from mhartid with illegal instruction +00000bad +00000002 # U mode write to mstatus with illegal instruction +00000002 # U mode read from mstatus with illegal instruction +00000bad +00000002 # U mode write to misa with illegal instruction +00000002 # U mode read from misa with illegal instruction +00000bad +00000002 # U mode write to medeleg with illegal instruction +00000002 # U mode read from medeleg with illegal instruction +00000bad +00000002 # U mode write to mideleg with illegal instruction +00000002 # U mode read from mideleg with illegal instruction +00000bad +00000002 # U mode write to mie with illegal instruction +00000002 # U mode read from mie with illegal instruction +00000bad +00000002 # U mode write to mtvec with illegal instruction +00000002 # U mode read from mtvec with illegal instruction +00000bad +00000002 # U mode write to mcounteren with illegal instruction +00000002 # U mode read from mcounteren with illegal instruction +00000bad +00000002 # U mode write to mscratch with illegal instruction +00000002 # U mode read from mscratch with illegal instruction +00000bad +00000002 # U mode write to mepc with illegal instruction +00000002 # U mode read from mepc with illegal instruction +00000bad +00000002 # U mode write to mcause with illegal instruction +00000002 # U mode read from mcause with illegal instruction +00000bad +00000002 # U mode write to mtval with illegal instruction +00000002 # U mode read from mtval with illegal instruction +00000bad +00000002 # U mode write to mip with illegal instruction +00000002 # U mode read from mip with illegal instruction +00000bad +00000002 # U mode write to pmpcfg0 with illegal instruction +00000002 # U mode read from pmpcfg0 with illegal instruction +00000bad +00000002 # U mode write to pmpcfg2 with illegal instruction +00000002 # U mode read from pmpcfg2 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr0 with illegal instruction +00000002 # U mode read from pmpaddr0 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr1 with illegal instruction +00000002 # U mode read from pmpaddr1 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr2 with illegal instruction +00000002 # U mode read from pmpaddr2 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr3 with illegal instruction +00000002 # U mode read from pmpaddr3 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr4 with illegal instruction +00000002 # U mode read from pmpaddr4 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr5 with illegal instruction +00000002 # U mode read from pmpaddr5 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr6 with illegal instruction +00000002 # U mode read from pmpaddr6 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr7 with illegal instruction +00000002 # U mode read from pmpaddr7 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr8 with illegal instruction +00000002 # U mode read from pmpaddr8 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr9 with illegal instruction +00000002 # U mode read from pmpaddr9 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr10 with illegal instruction +00000002 # U mode read from pmpaddr10 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr11 with illegal instruction +00000002 # U mode read from pmpaddr11 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr12 with illegal instruction +00000002 # U mode read from pmpaddr12 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr13 with illegal instruction +00000002 # U mode read from pmpaddr13 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr14 with illegal instruction +00000002 # U mode read from pmpaddr14 with illegal instruction +00000bad +00000002 # U mode write to pmpaddr15 with illegal instruction +00000002 # U mode read from pmpaddr15 with illegal instruction +00000bad +00000002 # U mode write to mcycle with illegal instruction +00000002 # U mode read from mcycle with illegal instruction +00000bad +00000002 # U mode write to minstret with illegal instruction +00000002 # U mode read from minstret with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter3 with illegal instruction +00000002 # U mode read from mhpmcounter3 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter4 with illegal instruction +00000002 # U mode read from mhpmcounter4 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter5 with illegal instruction +00000002 # U mode read from mhpmcounter5 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter6 with illegal instruction +00000002 # U mode read from mhpmcounter6 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter7 with illegal instruction +00000002 # U mode read from mhpmcounter7 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter8 with illegal instruction +00000002 # U mode read from mhpmcounter8 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter9 with illegal instruction +00000002 # U mode read from mhpmcounter9 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter10 with illegal instruction +00000002 # U mode read from mhpmcounter10 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter11 with illegal instruction +00000002 # U mode read from mhpmcounter11 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter12 with illegal instruction +00000002 # U mode read from mhpmcounter12 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter13 with illegal instruction +00000002 # U mode read from mhpmcounter13 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter14 with illegal instruction +00000002 # U mode read from mhpmcounter14 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter15 with illegal instruction +00000002 # U mode read from mhpmcounter15 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter16 with illegal instruction +00000002 # U mode read from mhpmcounter16 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter17 with illegal instruction +00000002 # U mode read from mhpmcounter17 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter18 with illegal instruction +00000002 # U mode read from mhpmcounter18 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter19 with illegal instruction +00000002 # U mode read from mhpmcounter19 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter20 with illegal instruction +00000002 # U mode read from mhpmcounter20 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter21 with illegal instruction +00000002 # U mode read from mhpmcounter21 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter22 with illegal instruction +00000002 # U mode read from mhpmcounter22 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter23 with illegal instruction +00000002 # U mode read from mhpmcounter23 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter24 with illegal instruction +00000002 # U mode read from mhpmcounter24 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter25 with illegal instruction +00000002 # U mode read from mhpmcounter25 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter26 with illegal instruction +00000002 # U mode read from mhpmcounter26 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter27 with illegal instruction +00000002 # U mode read from mhpmcounter27 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter28 with illegal instruction +00000002 # U mode read from mhpmcounter28 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter29 with illegal instruction +00000002 # U mode read from mhpmcounter29 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter30 with illegal instruction +00000002 # U mode read from mhpmcounter30 with illegal instruction +00000bad +00000002 # U mode write to mhpmcounter31 with illegal instruction +00000002 # U mode read from mhpmcounter31 with illegal instruction +00000bad +00000002 # U mode write to mcountinhibit with illegal instruction +00000002 # U mode read from mcountinhibit with illegal instruction +00000bad +00000002 # U mode write to mhpmevent3 with illegal instruction +00000002 # U mode read from mhpmevent3 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent4 with illegal instruction +00000002 # U mode read from mhpmevent4 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent5 with illegal instruction +00000002 # U mode read from mhpmevent5 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent6 with illegal instruction +00000002 # U mode read from mhpmevent6 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent7 with illegal instruction +00000002 # U mode read from mhpmevent7 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent8 with illegal instruction +00000002 # U mode read from mhpmevent8 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent9 with illegal instruction +00000002 # U mode read from mhpmevent9 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent10 with illegal instruction +00000002 # U mode read from mhpmevent10 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent11 with illegal instruction +00000002 # U mode read from mhpmevent11 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent12 with illegal instruction +00000002 # U mode read from mhpmevent12 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent13 with illegal instruction +00000002 # U mode read from mhpmevent13 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent14 with illegal instruction +00000002 # U mode read from mhpmevent14 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent15 with illegal instruction +00000002 # U mode read from mhpmevent15 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent16 with illegal instruction +00000002 # U mode read from mhpmevent16 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent17 with illegal instruction +00000002 # U mode read from mhpmevent17 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent18 with illegal instruction +00000002 # U mode read from mhpmevent18 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent19 with illegal instruction +00000002 # U mode read from mhpmevent19 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent20 with illegal instruction +00000002 # U mode read from mhpmevent20 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent21 with illegal instruction +00000002 # U mode read from mhpmevent21 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent22 with illegal instruction +00000002 # U mode read from mhpmevent22 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent23 with illegal instruction +00000002 # U mode read from mhpmevent23 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent24 with illegal instruction +00000002 # U mode read from mhpmevent24 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent25 with illegal instruction +00000002 # U mode read from mhpmevent25 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent26 with illegal instruction +00000002 # U mode read from mhpmevent26 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent27 with illegal instruction +00000002 # U mode read from mhpmevent27 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent28 with illegal instruction +00000002 # U mode read from mhpmevent28 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent29 with illegal instruction +00000002 # U mode read from mhpmevent29 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent30 with illegal instruction +00000002 # U mode read from mhpmevent30 with illegal instruction +00000bad +00000002 # U mode write to mhpmevent31 with illegal instruction +00000002 # U mode read from mhpmevent31 with illegal instruction +00000bad +00000008 # ecall from terminating tests in U mode +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-minfo-01.reference_output b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-minfo-01.reference_output new file mode 100644 index 000000000..55904acab --- /dev/null +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/references/WALLY-minfo-01.reference_output @@ -0,0 +1,1024 @@ +00000002 # Test 5.2.3.1: write to read-only CSR failed with illegal instruction +00000011 # confirm read-only permissions of mvendorid +00000002 # write to read-only CSR failed with illegal instruction +00000011 # confirm read-only permissions of marchid +00000002 # write to read-only CSR failed with illegal instruction +00000011 # confirm read-only permissions of mimpid +00000002 # write to read-only CSR failed with illegal instruction +00000011 # confirm read-only permissions of mhartid +0000000b # ecall from terminating tests in M mode +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef +deadbeef diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-s-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-s-01.S new file mode 100644 index 000000000..1d8aeb5de --- /dev/null +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-s-01.S @@ -0,0 +1,157 @@ +/////////////////////////////////////////// +// +// WALLY-CSR-permissions +// +// Author: Kip Macsai-Goren +// +// Created 2022-02-05 +// +// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +/////////////////////////////////////////// + +#include "WALLY-TEST-LIB-32.h" + +INIT_TESTS + +s_file_begin: + +# Test 5.2.3.6: Test that all the machine mode CSR's are innaccessible for reads and writes in S mode. + +# *** several of these appear not to be implemented in the assembler? +# I get "assembler messages: error: unkown CSR" with many of them. + +GOTO_S_MODE 0x0, 0x0 + +# Attempt to write 0xbad to each of these CSRs and read the value back +# should result in an illegal instruction for the write and read, respectively + +# Machine information Registers +WRITE_READ_CSR mvendorid, 0xbad +WRITE_READ_CSR marchid, 0xbad +WRITE_READ_CSR mimpid, 0xbad +WRITE_READ_CSR mhartid, 0xbad +# WRITE_READ_CSR mconfigptr, 0xbad # mconfigptr unimplemented in spike as of 31 Jan 22 + +# Machine Trap Setup +WRITE_READ_CSR mstatus, 0xbad +WRITE_READ_CSR misa, 0xbad +WRITE_READ_CSR medeleg, 0xbad +WRITE_READ_CSR mideleg, 0xbad +WRITE_READ_CSR mie, 0xbad +WRITE_READ_CSR mtvec, 0xbad +WRITE_READ_CSR mcounteren, 0xbad + +# Machine Trap Handling +WRITE_READ_CSR mscratch, 0xbad +WRITE_READ_CSR mepc, 0xbad +WRITE_READ_CSR mcause, 0xbad +WRITE_READ_CSR mtval, 0xbad +WRITE_READ_CSR mip, 0xbad +# WRITE_READ_CSR mtinst, 0xbad # *** these appear not to be implemented in GCC +# WRITE_READ_CSR mtval2, 0xbad + +# Machine Configuration +# WRITE_READ_CSR menvcfg, 0xbad # *** these appear not to be implemented in GCC +# WRITE_READ_CSR mseccgf, 0xbad + +# Machine Memory Protection +WRITE_READ_CSR pmpcfg0, 0xbad +WRITE_READ_CSR pmpcfg2, 0xbad # pmpcfg 1 and 3 dont exist in rv64. there's 1 pmpcfg reg per 8 pmpaddr regs + +WRITE_READ_CSR pmpaddr0, 0xbad +WRITE_READ_CSR pmpaddr1, 0xbad +WRITE_READ_CSR pmpaddr2, 0xbad +WRITE_READ_CSR pmpaddr3, 0xbad +WRITE_READ_CSR pmpaddr4, 0xbad +WRITE_READ_CSR pmpaddr5, 0xbad +WRITE_READ_CSR pmpaddr6, 0xbad +WRITE_READ_CSR pmpaddr7, 0xbad +WRITE_READ_CSR pmpaddr8, 0xbad +WRITE_READ_CSR pmpaddr9, 0xbad +WRITE_READ_CSR pmpaddr10, 0xbad +WRITE_READ_CSR pmpaddr11, 0xbad +WRITE_READ_CSR pmpaddr12, 0xbad +WRITE_READ_CSR pmpaddr13, 0xbad +WRITE_READ_CSR pmpaddr14, 0xbad +WRITE_READ_CSR pmpaddr15, 0xbad # only pmpcfg0...15 are enabled in our config + +# Machine Counter/Timers +WRITE_READ_CSR mcycle, 0xbad +WRITE_READ_CSR minstret, 0xbad +WRITE_READ_CSR mhpmcounter3, 0xbad +WRITE_READ_CSR mhpmcounter4, 0xbad +WRITE_READ_CSR mhpmcounter5, 0xbad +WRITE_READ_CSR mhpmcounter6, 0xbad +WRITE_READ_CSR mhpmcounter7, 0xbad +WRITE_READ_CSR mhpmcounter8, 0xbad +WRITE_READ_CSR mhpmcounter9, 0xbad +WRITE_READ_CSR mhpmcounter10, 0xbad +WRITE_READ_CSR mhpmcounter11, 0xbad +WRITE_READ_CSR mhpmcounter12, 0xbad +WRITE_READ_CSR mhpmcounter13, 0xbad +WRITE_READ_CSR mhpmcounter14, 0xbad +WRITE_READ_CSR mhpmcounter15, 0xbad +WRITE_READ_CSR mhpmcounter16, 0xbad +WRITE_READ_CSR mhpmcounter17, 0xbad +WRITE_READ_CSR mhpmcounter18, 0xbad +WRITE_READ_CSR mhpmcounter19, 0xbad +WRITE_READ_CSR mhpmcounter20, 0xbad +WRITE_READ_CSR mhpmcounter21, 0xbad +WRITE_READ_CSR mhpmcounter22, 0xbad +WRITE_READ_CSR mhpmcounter23, 0xbad +WRITE_READ_CSR mhpmcounter24, 0xbad +WRITE_READ_CSR mhpmcounter25, 0xbad +WRITE_READ_CSR mhpmcounter26, 0xbad +WRITE_READ_CSR mhpmcounter27, 0xbad +WRITE_READ_CSR mhpmcounter28, 0xbad +WRITE_READ_CSR mhpmcounter29, 0xbad +WRITE_READ_CSR mhpmcounter30, 0xbad +WRITE_READ_CSR mhpmcounter31, 0xbad + +# Machine Counter Setup +WRITE_READ_CSR mcountinhibit, 0xbad +WRITE_READ_CSR mhpmevent3, 0xbad +WRITE_READ_CSR mhpmevent4, 0xbad +WRITE_READ_CSR mhpmevent5, 0xbad +WRITE_READ_CSR mhpmevent6, 0xbad +WRITE_READ_CSR mhpmevent7, 0xbad +WRITE_READ_CSR mhpmevent8, 0xbad +WRITE_READ_CSR mhpmevent9, 0xbad +WRITE_READ_CSR mhpmevent10, 0xbad +WRITE_READ_CSR mhpmevent11, 0xbad +WRITE_READ_CSR mhpmevent12, 0xbad +WRITE_READ_CSR mhpmevent13, 0xbad +WRITE_READ_CSR mhpmevent14, 0xbad +WRITE_READ_CSR mhpmevent15, 0xbad +WRITE_READ_CSR mhpmevent16, 0xbad +WRITE_READ_CSR mhpmevent17, 0xbad +WRITE_READ_CSR mhpmevent18, 0xbad +WRITE_READ_CSR mhpmevent19, 0xbad +WRITE_READ_CSR mhpmevent20, 0xbad +WRITE_READ_CSR mhpmevent21, 0xbad +WRITE_READ_CSR mhpmevent22, 0xbad +WRITE_READ_CSR mhpmevent23, 0xbad +WRITE_READ_CSR mhpmevent24, 0xbad +WRITE_READ_CSR mhpmevent25, 0xbad +WRITE_READ_CSR mhpmevent26, 0xbad +WRITE_READ_CSR mhpmevent27, 0xbad +WRITE_READ_CSR mhpmevent28, 0xbad +WRITE_READ_CSR mhpmevent29, 0xbad +WRITE_READ_CSR mhpmevent30, 0xbad +WRITE_READ_CSR mhpmevent31, 0xbad + +END_TESTS + +TEST_STACK_AND_DATA \ No newline at end of file diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-u-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-u-01.S new file mode 100644 index 000000000..8991385df --- /dev/null +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-CSR-permission-u-01.S @@ -0,0 +1,173 @@ +/////////////////////////////////////////// +// +// WALLY-CSR-permissions +// +// Author: Kip Macsai-Goren +// +// Created 2022-02-05 +// +// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +/////////////////////////////////////////// + +#include "WALLY-TEST-LIB-32.h" + +INIT_TESTS + +s_file_begin: + +# Test 5.2.3.6: Test that all the machine mode CSR's are innaccessible for reads and writes in R mode. + +GOTO_U_MODE 0x0, 0x0 + +# Attempt to write 0xbad to each of these CSRs and read the value back +# should result in an illegal instruction for the write and read, respectively + +# Supervisor Trap Setup +WRITE_READ_CSR sstatus, 0xbad +WRITE_READ_CSR sie, 0xbad +WRITE_READ_CSR stvec, 0xbad +WRITE_READ_CSR scounteren, 0xbad + +# Supervisor Configuration +# WRITE_READ_CSR senvcfg, 0xbad # *** these appear not to be implemented in the compile step of make??? + +# Supervisor Trap Handling +WRITE_READ_CSR sscratch, 0xbad +WRITE_READ_CSR sepc, 0xbad +WRITE_READ_CSR scause, 0xbad +WRITE_READ_CSR stval, 0xbad +WRITE_READ_CSR sip, 0xbad + +# Supervisor Protection and Translation +WRITE_READ_CSR satp, 0xbad + +# Machine information Registers +WRITE_READ_CSR mvendorid, 0xbad +WRITE_READ_CSR marchid, 0xbad +WRITE_READ_CSR mimpid, 0xbad +WRITE_READ_CSR mhartid, 0xbad +# WRITE_READ_CSR mconfigptr, 0xbad # mconfigptr unimplemented in spike as of 31 Jan 22 + +# Machine Trap Setup +WRITE_READ_CSR mstatus, 0xbad +WRITE_READ_CSR misa, 0xbad +WRITE_READ_CSR medeleg, 0xbad +WRITE_READ_CSR mideleg, 0xbad +WRITE_READ_CSR mie, 0xbad +WRITE_READ_CSR mtvec, 0xbad +WRITE_READ_CSR mcounteren, 0xbad + +# Machine Trap Handling +WRITE_READ_CSR mscratch, 0xbad +WRITE_READ_CSR mepc, 0xbad +WRITE_READ_CSR mcause, 0xbad +WRITE_READ_CSR mtval, 0xbad +WRITE_READ_CSR mip, 0xbad +# WRITE_READ_CSR mtinst, 0xbad # *** these appear not to be implemented in the compile step of make??? +# WRITE_READ_CSR mtval2, 0xbad + +# Machine Configuration +# WRITE_READ_CSR menvcfg, 0xbad # *** these appear not to be implemented in the compile step of make??? +# WRITE_READ_CSR mseccgf, 0xbad + +# Machine Memory Protection +WRITE_READ_CSR pmpcfg0, 0xbad +WRITE_READ_CSR pmpcfg2, 0xbad # pmpcfg 1 and 3 dont exist in rv64. there's 1 pmpcfg reg per 8 pmpaddr regs + +WRITE_READ_CSR pmpaddr0, 0xbad +WRITE_READ_CSR pmpaddr1, 0xbad +WRITE_READ_CSR pmpaddr2, 0xbad +WRITE_READ_CSR pmpaddr3, 0xbad +WRITE_READ_CSR pmpaddr4, 0xbad +WRITE_READ_CSR pmpaddr5, 0xbad +WRITE_READ_CSR pmpaddr6, 0xbad +WRITE_READ_CSR pmpaddr7, 0xbad +WRITE_READ_CSR pmpaddr8, 0xbad +WRITE_READ_CSR pmpaddr9, 0xbad +WRITE_READ_CSR pmpaddr10, 0xbad +WRITE_READ_CSR pmpaddr11, 0xbad +WRITE_READ_CSR pmpaddr12, 0xbad +WRITE_READ_CSR pmpaddr13, 0xbad +WRITE_READ_CSR pmpaddr14, 0xbad +WRITE_READ_CSR pmpaddr15, 0xbad # only pmpcfg0...15 are enabled in our config + +# Machine Counter/Timers +WRITE_READ_CSR mcycle, 0xbad +WRITE_READ_CSR minstret, 0xbad +WRITE_READ_CSR mhpmcounter3, 0xbad +WRITE_READ_CSR mhpmcounter4, 0xbad +WRITE_READ_CSR mhpmcounter5, 0xbad +WRITE_READ_CSR mhpmcounter6, 0xbad +WRITE_READ_CSR mhpmcounter7, 0xbad +WRITE_READ_CSR mhpmcounter8, 0xbad +WRITE_READ_CSR mhpmcounter9, 0xbad +WRITE_READ_CSR mhpmcounter10, 0xbad +WRITE_READ_CSR mhpmcounter11, 0xbad +WRITE_READ_CSR mhpmcounter12, 0xbad +WRITE_READ_CSR mhpmcounter13, 0xbad +WRITE_READ_CSR mhpmcounter14, 0xbad +WRITE_READ_CSR mhpmcounter15, 0xbad +WRITE_READ_CSR mhpmcounter16, 0xbad +WRITE_READ_CSR mhpmcounter17, 0xbad +WRITE_READ_CSR mhpmcounter18, 0xbad +WRITE_READ_CSR mhpmcounter19, 0xbad +WRITE_READ_CSR mhpmcounter20, 0xbad +WRITE_READ_CSR mhpmcounter21, 0xbad +WRITE_READ_CSR mhpmcounter22, 0xbad +WRITE_READ_CSR mhpmcounter23, 0xbad +WRITE_READ_CSR mhpmcounter24, 0xbad +WRITE_READ_CSR mhpmcounter25, 0xbad +WRITE_READ_CSR mhpmcounter26, 0xbad +WRITE_READ_CSR mhpmcounter27, 0xbad +WRITE_READ_CSR mhpmcounter28, 0xbad +WRITE_READ_CSR mhpmcounter29, 0xbad +WRITE_READ_CSR mhpmcounter30, 0xbad +WRITE_READ_CSR mhpmcounter31, 0xbad + +# Machine Counter Setup +WRITE_READ_CSR mcountinhibit, 0xbad +WRITE_READ_CSR mhpmevent3, 0xbad +WRITE_READ_CSR mhpmevent4, 0xbad +WRITE_READ_CSR mhpmevent5, 0xbad +WRITE_READ_CSR mhpmevent6, 0xbad +WRITE_READ_CSR mhpmevent7, 0xbad +WRITE_READ_CSR mhpmevent8, 0xbad +WRITE_READ_CSR mhpmevent9, 0xbad +WRITE_READ_CSR mhpmevent10, 0xbad +WRITE_READ_CSR mhpmevent11, 0xbad +WRITE_READ_CSR mhpmevent12, 0xbad +WRITE_READ_CSR mhpmevent13, 0xbad +WRITE_READ_CSR mhpmevent14, 0xbad +WRITE_READ_CSR mhpmevent15, 0xbad +WRITE_READ_CSR mhpmevent16, 0xbad +WRITE_READ_CSR mhpmevent17, 0xbad +WRITE_READ_CSR mhpmevent18, 0xbad +WRITE_READ_CSR mhpmevent19, 0xbad +WRITE_READ_CSR mhpmevent20, 0xbad +WRITE_READ_CSR mhpmevent21, 0xbad +WRITE_READ_CSR mhpmevent22, 0xbad +WRITE_READ_CSR mhpmevent23, 0xbad +WRITE_READ_CSR mhpmevent24, 0xbad +WRITE_READ_CSR mhpmevent25, 0xbad +WRITE_READ_CSR mhpmevent26, 0xbad +WRITE_READ_CSR mhpmevent27, 0xbad +WRITE_READ_CSR mhpmevent28, 0xbad +WRITE_READ_CSR mhpmevent29, 0xbad +WRITE_READ_CSR mhpmevent30, 0xbad +WRITE_READ_CSR mhpmevent31, 0xbad + +END_TESTS + +TEST_STACK_AND_DATA \ No newline at end of file diff --git a/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-minfo-01.S b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-minfo-01.S new file mode 100644 index 000000000..9d1803a9f --- /dev/null +++ b/tests/wally-riscv-arch-test/riscv-test-suite/rv32i_m/privilege/src/WALLY-minfo-01.S @@ -0,0 +1,39 @@ +/////////////////////////////////////////// +// +// WALLY-MMU +// +// Author: Kip Macsai-Goren +// +// Created 2022-01-25 +// +// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +// is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +/////////////////////////////////////////// + +#include "WALLY-TEST-LIB-32.h" + +INIT_TESTS + +s_file_begin: + +// Test 5.2.3.1: testing Read-only access to Machine info CSRs +CSR_R_ACCESS mvendorid +CSR_R_ACCESS marchid +CSR_R_ACCESS mimpid +CSR_R_ACCESS mhartid +# CSR_R_ACCESS mconfigptr # Unimplemented in spike as of 31 Jan 22 + +END_TESTS + +TEST_STACK_AND_DATA \ No newline at end of file