Re-enable virtual memory tests
authorAndrew Waterman <waterman@cs.berkeley.edu>
Sat, 21 Sep 2013 13:32:12 +0000 (06:32 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Sat, 21 Sep 2013 13:32:12 +0000 (06:32 -0700)
env/v/vm.c
isa/Makefile
isa/rv64ui/Makefrag

index bfbf197a850c55e0d175845fefeacf3deece64f8..173287a64f3f82c68993728f133a767b8ba76914 100644 (file)
@@ -99,7 +99,7 @@ void handle_fault(unsigned long addr)
   __builtin___clear_cache(0,0);
 }
 
-void emulate_vxcptsave(trapframe_t* tf)
+static void emulate_vxcptsave(trapframe_t* tf)
 {
   long where = tf->gpr[(tf->insn >> 22) & 0x1F];
 
@@ -107,7 +107,7 @@ void emulate_vxcptsave(trapframe_t* tf)
   fencevl();
 }
 
-void do_vxcptrestore(long* where)
+static void do_vxcptrestore(long* where)
 {
   vxcpthold();
 
@@ -152,7 +152,7 @@ void do_vxcptrestore(long* where)
   }
 }
 
-void emulate_vxcptrestore(trapframe_t* tf)
+static void emulate_vxcptrestore(trapframe_t* tf)
 {
   long* where = (long*)tf->gpr[(tf->insn >> 22) & 0x1F];
   vxcptkill();
@@ -160,7 +160,7 @@ void emulate_vxcptrestore(trapframe_t* tf)
   do_vxcptrestore(where);
 }
 
-void restore_vector(trapframe_t* tf)
+static void restore_vector(trapframe_t* tf)
 {
   mtpcr(PCR_VECBANK, tf->vecbank);
   //vcfg(tf->veccfg);
@@ -191,10 +191,12 @@ void handle_trap(trapframe_t* tf)
 
     if (tf->insn == fssr)
       terminate(1); // FP test on non-FP hardware.  "succeed."
+#if 0
     else if ((tf->insn & 0xF83FFFFF) == 0x37B)
       emulate_vxcptsave(tf);
     else if ((tf->insn & 0xF83FFFFF) == 0x77B)
       emulate_vxcptrestore(tf);
+#endif
     else
       assert(0);
     tf->epc += 4;
@@ -243,7 +245,12 @@ void vm_boot(long test_addr, long seed)
   // relocate
   long adjustment = RELOC(0L), tmp;
   mtpcr(PCR_EVEC, (char*)&trap_entry + adjustment);
-  asm volatile ("add sp, sp, %1; rdpc %0; addi %0, %0, 16; add %0, %0, %1; jr %0" : "=&r"(tmp) : "r"(adjustment));
+  asm volatile ("add sp, sp, %1\n"
+                "jal %0, 1f\n"
+                "1: add %0, %0, %1\n"
+                "jr %0, 8"
+                : "=&r"(tmp)
+                : "r"(adjustment));
 
   memset(RELOC(&l3pt[0]), 0, MAX_TEST_PAGES*sizeof(pte_t));
   mtpcr(PCR_FATC, 0);
index e81f696bf9b5886486abb9d0659ce68203296e2f..553e692e6c90028c66212d1ada33aa6de14c9a70 100644 (file)
@@ -75,8 +75,8 @@ $(eval $(call compile_template,rv64uv))
 $(eval $(call compile_template,rv64si))
 $(eval $(call compile_template,rv64sv))
 
-tests_dump = $(addsuffix .dump, $(tests))
-tests_hex = $(addsuffix .hex, $(tests))
+tests_dump = $(addsuffix .dump, $(spike_tests))
+tests_hex = $(addsuffix .hex, $(spike_tests))
 tests_out = $(addsuffix .out, $(spike_tests))
 
 run: $(tests_out)
index adb015ab780c15bac1503a0718792daa446b9383..3f77dc793e1ba4d66672145a218dc936a5bc9396 100644 (file)
@@ -49,4 +49,4 @@ rv64ui_p_vec_tests = $(addprefix rv64ui-p-vec-, $(rv64ui_sc_vec_tests))
 rv64ui_pt_vec_tests = $(addprefix rv64ui-pt-vec-, $(rv64ui_sc_vec_tests))
 rv64ui_v_vec_tests = $(addprefix rv64ui-v-vec-, $(rv64ui_sc_vec_tests))
 
-spike_tests += $(rv64ui_p_tests) $(rv64ui_pm_tests) #$(rv64ui_v_tests) $(rv64ui_p_vec_tests) $(rv64ui_pt_vec_tests) $(rv64ui_v_vec_tests)
+spike_tests += $(rv64ui_p_tests) $(rv64ui_pm_tests) $(rv64ui_v_tests) #$(rv64ui_p_vec_tests) $(rv64ui_pt_vec_tests) $(rv64ui_v_vec_tests)