Run RV32 tests on spike with --isa=RV32
authorAndrew Waterman <waterman@cs.berkeley.edu>
Sat, 4 Apr 2015 05:16:00 +0000 (22:16 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Sat, 4 Apr 2015 05:16:00 +0000 (22:16 -0700)
env
isa/Makefile
isa/rv32mi/Makefrag
isa/rv32si/Makefrag
isa/rv32si/shamt.S
isa/rv64mi/dirty.S

diff --git a/env b/env
index b79db7710e027de487986d03729f7e306c3cd94a..57b1adbf48ad588366c8f88d91e4c165feb3dae1 160000 (submodule)
--- a/env
+++ b/env
@@ -1 +1 @@
-Subproject commit b79db7710e027de487986d03729f7e306c3cd94a
+Subproject commit 57b1adbf48ad588366c8f88d91e4c165feb3dae1
index 229a50961cee9e7e957338d0b6a072b20f3b4262..e4606d53bf0b0ceaa2d75734c504e134ad975492 100644 (file)
@@ -40,6 +40,9 @@ vpath %.S $(isa_src_dir)
 %.out: %
        $(RISCV_SIM) $< 2> $@
 
+%.out32: %
+       $(RISCV_SIM) --isa=RV32 $< 2> $@
+
 define compile_template
 
 $$($(1)_p_tests): $(1)-p-%: $(1)/%.S
@@ -94,12 +97,13 @@ $(eval $(call compile_template,rv64mi))
 tests_dump = $(addsuffix .dump, $(tests))
 tests_hex = $(addsuffix .hex, $(tests))
 tests_out = $(addsuffix .out, $(spike_tests))
+tests32_out = $(addsuffix .out32, $(spike32_tests))
 
-run: $(tests_out)
+run: $(tests_out) $(tests32_out)
        echo; perl -ne 'print "  [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
-              $(tests_out); echo;
+              $(tests_out) $(tests32_out); echo;
 
-junk += $(tests) $(tests_dump) $(tests_hex) $(tests_out)
+junk += $(tests) $(tests_dump) $(tests_hex) $(tests_out) $(tests32_out)
 
 #------------------------------------------------------------
 # Default
index e6ab8c845ae12269a41810e2163087408041f5db..7560dbc47be2ee8c82b1bf538d9f1356126571f1 100644 (file)
@@ -16,3 +16,5 @@ rv32mi_mc_tests = \
 
 rv32mi_p_tests = $(addprefix rv32mi-p-, $(rv32mi_sc_tests))
 rv32mi_pm_tests = $(addprefix rv32mi-pm-, $(rv32mi_mc_tests))
+
+spike32_tests += $(rv32mi_p_tests) $(rv32mi_pm_tests)
index e03819f9f964e963c7b0a67eb10cd7c07564d1b7..4d8f33ec097dd8fcdef571bfa4730b429679cf54 100644 (file)
@@ -13,3 +13,5 @@ rv32si_sc_tests = \
        timer \
 
 rv32si_p_tests = $(addprefix rv32si-p-, $(rv32si_sc_tests))
+
+spike32_tests += $(rv32si_p_tests)
index 4fe7c2f82be5670eef28353cde85406771eddbe7..615ef68defa47761697f85bab29f228bc8e386e5 100644 (file)
@@ -13,7 +13,7 @@
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la t0, stvec
+  la t0, stvec_handler
   csrw stvec, t0
 
   # Make sure slli with shamt[4] set is legal.
@@ -24,7 +24,7 @@ RVTEST_CODE_BEGIN
 
   TEST_PASSFAIL
 
-stvec:
+stvec_handler:
   # Trapping on test 3 is good.
   # Note that since the test didn't complete, TESTNUM is smaller by 1.
   li t0, 2
index ef4e65c0a6537817a28b2288a0225c0ce21bb97b..1cf429a235ef8107c36d10af10e210b3f428a61b 100644 (file)
@@ -17,7 +17,7 @@ RVTEST_CODE_BEGIN
   la a1, page_table_1
   csrw sptbr, a1
   sfence.vm
-  li a1, ((MSTATUS_VM & ~(MSTATUS_VM<<1)) * VM_SV43) | ((MSTATUS_PRV1 & ~(MSTATUS_PRV1<<1)) * PRV_S)
+  li a1, ((MSTATUS_VM & ~(MSTATUS_VM<<1)) * VM_SV39) | ((MSTATUS_PRV1 & ~(MSTATUS_PRV1<<1)) * PRV_S)
   csrs mstatus, a1
   la a1, 1f
   csrw mepc, a1