Update to new privileged spec
authorAndrew Waterman <waterman@cs.berkeley.edu>
Fri, 13 Mar 2015 00:39:44 +0000 (17:39 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Fri, 13 Mar 2015 00:39:44 +0000 (17:39 -0700)
24 files changed:
benchmarks/common/crt.S
benchmarks/common/syscalls.c
benchmarks/common/test.ld
env
isa/Makefile
isa/macros/scalar/test_macros.h
isa/macros/vector/test_macros.h
isa/rv32si/Makefrag
isa/rv32si/illegal.S
isa/rv32si/ma_addr.S
isa/rv32si/ma_fetch.S
isa/rv32si/privileged.S [deleted file]
isa/rv32si/sbreak.S
isa/rv32si/scall.S
isa/rv32si/shamt.S
isa/rv32ui/lrsc.S
isa/rv64si/Makefrag
isa/rv64si/coreid.S [deleted file]
isa/rv64si/csr.S
isa/rv64si/ipi.S
isa/rv64si/timer.S
isa/rv64uf/Makefrag
isa/rv64ui/Makefrag
isa/rv64ui/lrsc.S

index a4f6671ef9bc06d2e67e26c7cd957c6b19fa2380..debee6dbc3d962146afd71bb967201ebfee6ed7f 100644 (file)
 #endif
 
   .text
-  .globl _start
+  .align 6
+user_trap_entry:
+  j trap_entry
+
+  .align 6
+supervisor_trap_entry:
+  j supervisor_trap_entry
+
+  .align 6
+hypervisor_trap_entry:
+  j hypervisor_trap_entry
 
+  .align 6
+machine_trap_entry:
+  j trap_entry
+
+  .align 6
+  .globl _start
 _start:
   li  x1, 0
   li  x2, 0
@@ -46,21 +62,23 @@ _start:
   li  x30,0
   li  x31,0
 
-  # initialize status, enable fp, accelerator, interrupts
-  li a0, SR_S | SR_PEI | SR_EF | SR_EA
-  csrw status, a0
+  li t0, MSTATUS_PRV1; csrc mstatus, t0    # run tests in user mode
+  li t0, MSTATUS_IE1;  csrs mstatus, t0    # enable interrupts in user mode
+  li t0, MSTATUS_FS;   csrs mstatus, t0    # enable FPU
+  li t0, MSTATUS_XS;   csrs mstatus, t0    # enable accelerator
 
-#ifdef __riscv64
-  li a0, SR_U64 | SR_S64
-  csrs status, a0
+#ifndef __riscv64
+  li t0, MSTATUS_UA;   csrc mstatus, t0    # disable RV64 for user mode
 #endif
 
-  csrr t0, status
-  and t1, t0, SR_EA
+  csrr t0, mstatus
+  li t1, MSTATUS_XS
+  and t1, t0, t1
   sw t1, have_vec, t2
 
   ## if that didn't stick, we don't have a FPU, so don't initialize it
-  and t1, t0, SR_EF
+  li t1, MSTATUS_FS
+  and t1, t0, t1
   beqz t1, 1f
 
   fssr    x0
@@ -98,15 +116,14 @@ _start:
   fmv.s.x f31,x0
 1:
 
-  la t0, trap_entry
-  csrw evec, t0
-
   la  tp, _end + 63
   and tp, tp, -64
 
-  # get core id and number of cores
+  # get core id
   csrr a0, hartid
-  lw a1, 4(zero)
+  # for now, assume only 1 core
+  li a1, 1
+1:bgeu a0, a1, 1b
 
   # give each core 128KB of stack + TLS
 #define STKSHIFT 17
@@ -117,8 +134,8 @@ _start:
   add sp, sp, tp
 
   la t0, _init
-  csrw epc, t0
-  sret
+  csrw mepc, t0
+  mret
 
 trap_entry:
   addi sp, sp, -272
@@ -155,21 +172,11 @@ trap_entry:
   SREG x30, 240(sp)
   SREG x31, 248(sp)
 
-  csrr t0, sup0
-  csrr t1, status
-  SREG t0, 256(sp)
-  SREG t1, 264(sp)
-
-  csrr a0, cause
-  csrr a1, epc
+  csrr a0, mcause
+  csrr a1, mepc
   mv a2, sp
   jal handle_trap
-  csrw epc, a0
-
-  LREG t0, 256(sp)
-  LREG t1, 264(sp)
-  csrw sup0, t0
-  csrw status, t1
+  csrw mepc, a0
 
   LREG x1, 8(sp)
   LREG x2, 16(sp)
@@ -204,7 +211,7 @@ trap_entry:
   LREG x31, 248(sp)
 
   addi sp, sp, 272
-  sret
+  mret
 
 .section ".tdata.begin"
 .globl _tdata_begin
index 32716948f2432d8cdb79d345422afc25e05fe644..12dab700af9b2e5b339d5dcbd42e3efcdca4a948 100644 (file)
@@ -75,7 +75,7 @@ long handle_trap(long cause, long epc, long regs[32])
   if (cause == CAUSE_ILLEGAL_INSTRUCTION &&
       (*(int*)epc & *csr_insn) == *csr_insn)
     ;
-  else if (cause != CAUSE_SYSCALL)
+  else if (cause != CAUSE_SCALL)
     tohost_exit(1337);
   else if (regs[17] == SYS_exit)
     tohost_exit(regs[10]);
index 438581cb6b04d9b754b09840d7b4e60dd61d60c1..816c948d691519d2f56e2fe22e553969cabcc949 100644 (file)
 
 OUTPUT_ARCH( "riscv" )
 
-/* The ENTRY command specifies the entry point (ie. first instruction
-   to execute). The symbol _start should be defined in each test. */
-
-ENTRY( _start )
-
 /*----------------------------------------------------------------------*/
 /* Sections                                                             */
 /*----------------------------------------------------------------------*/
@@ -26,7 +21,7 @@ SECTIONS
 {
 
   /* text: test code section */
-  . = 0x00002000;
+  . = 0;
   .text : 
   {
     crt.o(.text)
diff --git a/env b/env
index 18e64b6ced40e97a0469b47471f2b66305264a16..3a2ed4c0966add8f9730c3962a784cc423891663 160000 (submodule)
--- a/env
+++ b/env
@@ -1 +1 @@
-Subproject commit 18e64b6ced40e97a0469b47471f2b66305264a16
+Subproject commit 3a2ed4c0966add8f9730c3962a784cc423891663
index 19bd1e718f7985cd4b2073a9c90c81651ba5fdc4..9c7f37e468b3e6a4ec4cabcc5fa516b86e80de7a 100644 (file)
@@ -6,9 +6,9 @@ isa_src_dir := .
 
 include $(isa_src_dir)/rv64ui/Makefrag
 include $(isa_src_dir)/rv64uf/Makefrag
-include $(isa_src_dir)/rv64uv/Makefrag
+#include $(isa_src_dir)/rv64uv/Makefrag
 include $(isa_src_dir)/rv64si/Makefrag
-include $(isa_src_dir)/rv64sv/Makefrag
+#include $(isa_src_dir)/rv64sv/Makefrag
 include $(isa_src_dir)/rv32ui/Makefrag
 include $(isa_src_dir)/rv32si/Makefrag
 
index ec39ea74713dfffa4c193f39a494037f3fa214fd..81052a6b4f2643eeb45e018991b85940fde31777 100644 (file)
@@ -696,7 +696,7 @@ handler ## testnum: \
 #define TEST_PASSFAIL \
         bne x0, TESTNUM, pass; \
 fail: \
-        RVTEST_FAIL \
+        RVTEST_FAIL; \
 pass: \
         RVTEST_PASS \
 
index 736b587112e24eb9c527f78d073457342f995fcc..a97ffe7d9b0ff05ecfe7c46ae3f92f934caaa348 100644 (file)
@@ -599,7 +599,7 @@ next ## testnum :
 #define TEST_PASSFAIL \
         bne x0, TESTNUM, pass; \
 fail: \
-        RVTEST_FAIL \
+        RVTEST_FAIL; \
 pass: \
         RVTEST_PASS \
 
index 024a9a013259e5488369b2a2e6419fc90f19ce52..70cea701876365cb22e98593d72578ebb8197fc4 100644 (file)
@@ -7,7 +7,6 @@ rv32si_sc_tests = \
        shamt \
        ma_fetch \
        illegal \
-       privileged \
        scall \
        sbreak \
        ma_addr \
index aa97932a328f660e8e1c021de839df71e023c241..3bec030566f050367d6e704a02b65c9b1ac988ce 100644 (file)
@@ -13,8 +13,8 @@
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la t0, evec
-  csrw evec, t0
+  la t0, stvec
+  csrw stvec, t0
 
   li TESTNUM, 2
   .word 0
@@ -24,13 +24,13 @@ RVTEST_CODE_BEGIN
 
   TEST_PASSFAIL
 
-evec:
+stvec:
   li t1, CAUSE_ILLEGAL_INSTRUCTION
-  csrr t0, cause
+  csrr t0, scause
   bne t0, t1, fail
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 8
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
 RVTEST_CODE_END
index 897282e29a8bacd30e6de6d2d91d287248ac6fb1..13ac778b059700110af58c7f44437a54379059a2 100644 (file)
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la s0, evec_load
+  la s0, stvec_load
 
-  la t0, evec_load
-  csrw evec, t0
+  la t0, stvec_load
+  csrw stvec, t0
 
   li TESTNUM, 2
   lw x0, 1(s0)
@@ -38,8 +38,8 @@ RVTEST_CODE_BEGIN
   lhu x0, 1(s0)
   j fail
 
-  la t0, evec_store
-  csrw evec, t0
+  la t0, stvec_store
+  csrw stvec, t0
 
   li TESTNUM, 7
   sw x0, 1(s0)
@@ -61,22 +61,22 @@ RVTEST_CODE_BEGIN
 
   TEST_PASSFAIL
 
-evec_load:
+stvec_load:
   li t1, CAUSE_MISALIGNED_LOAD
-  csrr t0, cause
+  csrr t0, scause
   bne t0, t1, fail
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 8
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
-evec_store:
+stvec_store:
   li t1, CAUSE_MISALIGNED_STORE
-  csrr t0, cause
+  csrr t0, scause
   bne t0, t1, fail
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 8
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
 RVTEST_CODE_END
index f31063010bc2cac49c1de69aa4f9df568ca71520..4aa7973fd805fc3852a0792ee6267155780315d2 100644 (file)
@@ -13,8 +13,8 @@
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la t0, evec
-  csrw evec, t0
+  la t0, stvec
+  csrw stvec, t0
 
   li TESTNUM, 2
   la t0, 1f
@@ -38,17 +38,17 @@ RVTEST_CODE_BEGIN
 
   TEST_PASSFAIL
 
-evec:
+stvec:
   li t0, 3
   beq TESTNUM, t0, fail
 
   li t1, CAUSE_MISALIGNED_FETCH
-  csrr t0, cause
+  csrr t0, scause
   bne t0, t1, fail
   li t1, 0
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 2 // skip over instruction after jalr
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
 RVTEST_CODE_END
diff --git a/isa/rv32si/privileged.S b/isa/rv32si/privileged.S
deleted file mode 100644 (file)
index 519de80..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# See LICENSE for license details.
-
-#*****************************************************************************
-# privileged.S
-#-----------------------------------------------------------------------------
-#
-# Test privileged instruction trap.
-#
-
-#include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32S
-RVTEST_CODE_BEGIN
-
-  la t0, evec
-  csrw evec, t0
-
-  csrci status, 1
-
-  li TESTNUM, 2
-  sret
-  j fail
-
-  TEST_PASSFAIL
-
-evec:
-  li t1, CAUSE_PRIVILEGED_INSTRUCTION
-  csrr t0, cause
-  bne t0, t1, fail
-  j pass
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-RVTEST_DATA_END
index 4349b35dae9fba8228038143188d3e68fba7a272..cd920db0240096015d735147ff966c9c7eefc5e0 100644 (file)
@@ -13,8 +13,8 @@
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la t0, evec
-  csrw evec, t0
+  la t0, stvec
+  csrw stvec, t0
 
   li TESTNUM, 2
   sbreak
@@ -24,13 +24,13 @@ RVTEST_CODE_BEGIN
 
   TEST_PASSFAIL
 
-evec:
+stvec:
   li t1, CAUSE_BREAKPOINT
-  csrr t0, cause
+  csrr t0, scause
   bne t0, t1, fail
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 8
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
 RVTEST_CODE_END
index 3dda8b1875b1dce03553b9ea453394a093c669e6..c5cc3ac98ce7b68d3865b53db928c1f8ac796b3b 100644 (file)
@@ -13,8 +13,8 @@
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la t0, evec
-  csrw evec, t0
+  la t0, stvec
+  csrw stvec, t0
 
   li TESTNUM, 2
   scall
@@ -24,13 +24,13 @@ RVTEST_CODE_BEGIN
 
   TEST_PASSFAIL
 
-evec:
-  li t1, CAUSE_SYSCALL
-  csrr t0, cause
+stvec:
+  li t1, CAUSE_SCALL
+  csrr t0, scause
   bne t0, t1, fail
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 8
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
 RVTEST_CODE_END
index ee1c8b5ce44f3f4bf04f5d31604b8a4ce85ce657..4fe7c2f82be5670eef28353cde85406771eddbe7 100644 (file)
 RVTEST_RV32S
 RVTEST_CODE_BEGIN
 
-  la t0, evec
-  csrw evec, t0
+  la t0, stvec
+  csrw stvec, t0
 
   # Make sure slli with shamt[4] set is legal.
   TEST_CASE( 2, a0, 65536, li a0, 1; slli a0, a0, 16);
 
-  # Make sure slli with shamt[4] set is not legal.
+  # Make sure slli with shamt[5] set is not legal.
   TEST_CASE( 3, x0, 1, slli a0, a0, 32);
 
   TEST_PASSFAIL
 
-evec:
+stvec:
   # Trapping on test 3 is good.
   # Note that since the test didn't complete, TESTNUM is smaller by 1.
   li t0, 2
   bne TESTNUM, t0, fail
 
   # Make sure CAUSE indicates an illegal instructino.
-  csrr t0, cause
+  csrr t0, scause
   li t1, CAUSE_ILLEGAL_INSTRUCTION
   bne t0, t1, fail
   j pass
index f559f29865e5e445747db3e454d735a94905e9dd..2aee81802a287f597ee2e38865e81f21f7f5b178 100644 (file)
 RVTEST_RV32U
 RVTEST_CODE_BEGIN
 
-# wait for all cores to boot
+# get a unique core id
 la a0, coreid
 li a1, 1
 amoadd.w a2, a1, (a0)
-lw a3, 4(x0)
+
+# for now, only run this on core 0
+1:li a3, 1
+bgeu a2, a3, 1b
+
 1: lw a1, (a0)
-blt a1, a3, 1b
+bltu a1, a3, 1b
 
 # make sure that sc without a reservation fails.
 TEST_CASE( 2, a4, 1, \
index f40a56f58b48bc86de5c95fe4b1bfe231525ec95..c5a5d9508be0936c8730184d41b530c097b3bbf2 100644 (file)
@@ -3,7 +3,6 @@
 #-----------------------------------------------------------------------
 
 rv64si_sc_tests = \
-       coreid \
        csr \
        timer \
 
diff --git a/isa/rv64si/coreid.S b/isa/rv64si/coreid.S
deleted file mode 100644 (file)
index 0bfee16..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# See LICENSE for license details.
-
-#*****************************************************************************
-# coreid.S
-#-----------------------------------------------------------------------------
-#
-# Test coreid.
-#
-
-#include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV64S
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_CASE( 2, x1, 0x0, li x1, 1; csrr x1, hartid );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-RVTEST_DATA_END
index 649c639b4cdfde95bfb1ba98c8c467ef59e9043d..2a326a6cc807a0de79b11190651859328f25c02c 100644 (file)
 RVTEST_RV64S
 RVTEST_CODE_BEGIN
 
-  # Set up evec in case we trap.
-  la t0, evec
-  csrw evec, t0
-  csrwi count, 0
-
-  csrwi sup0, 3
-  TEST_CASE( 2, a0,         3, csrr a0, sup0);
-  TEST_CASE( 3, a1,         3, csrrci a1, sup0, 1);
-  TEST_CASE( 4, a2,         2, csrrsi a2, sup0, 4);
-  TEST_CASE( 5, a3,         6, csrrwi a3, sup0, 2);
-  TEST_CASE( 6, a1,         2, li a0, 0xbad1dea; csrrw a1, sup0, a0);
-  TEST_CASE( 7, a0, 0xbad1dea, li a0, 0x0001dea; csrrc a0, sup0, a0);
-  TEST_CASE( 8, a0, 0xbad0000, li a0, 0x000beef; csrrs a0, sup0, a0);
-  TEST_CASE( 9, a0, 0xbadbeef, csrr a0, sup0);
+  # Set up stvec in case we trap.
+  la t0, stvec
+  csrw stvec, t0
+  csrwi scycle, 0
+
+  csrwi sscratch, 3
+  TEST_CASE( 2, a0,         3, csrr a0, sscratch);
+  TEST_CASE( 3, a1,         3, csrrci a1, sscratch, 1);
+  TEST_CASE( 4, a2,         2, csrrsi a2, sscratch, 4);
+  TEST_CASE( 5, a3,         6, csrrwi a3, sscratch, 2);
+  TEST_CASE( 6, a1,         2, li a0, 0xbad1dea; csrrw a1, sscratch, a0);
+  TEST_CASE( 7, a0, 0xbad1dea, li a0, 0x0001dea; csrrc a0, sscratch, a0);
+  TEST_CASE( 8, a0, 0xbad0000, li a0, 0x000beef; csrrs a0, sscratch, a0);
+  TEST_CASE( 9, a0, 0xbadbeef, csrr a0, sscratch);
 
   # Make sure writing the cycle counter causes an exception.
   TEST_CASE(10, a0, 255, li a0, 255; csrrw a0, cycle, x0);
 
+  # Enter user mode
+  li t0, SSTATUS_PS
+  csrc sstatus, t0
+  la t0, 1f
+  csrw sepc, t0
+  sret
+  1:
+
   # Make sure reading status in user mode causes an exception.
-  csrci status, SR_S|SR_PS
-  TEST_CASE(11, a0, 255, li a0, 255; csrr a0, status);
+  TEST_CASE(11, a0, 255, li a0, 255; csrr a0, sstatus);
 
   # Make sure rdcycle is legal in user mode.
   TEST_CASE(12, x0, 0, rdcycle a0)
@@ -44,7 +51,7 @@ RVTEST_CODE_BEGIN
   # We should only fall through to this if scall failed.
   TEST_PASSFAIL
 
-evec:
+stvec:
   # Trapping on tests 10, 11, and 13 is usually good news.
   # Note that since the test didn't complete, TESTNUM is smaller by 1.
   li t0, 9
@@ -59,19 +66,19 @@ evec:
 
 privileged:
   # Make sure CAUSE indicates a lack of privilege.
-  csrr t0, cause
-  li t1, CAUSE_PRIVILEGED_INSTRUCTION
+  csrr t0, scause
+  li t1, CAUSE_ILLEGAL_INSTRUCTION
   bne t0, t1, fail
   # Return to user mode, but skip the trapping instruction.
-  csrr t0, epc
+  csrr t0, sepc
   addi t0, t0, 4
-  csrw epc, t0
+  csrw sepc, t0
   sret
 
 syscall:
   # Make sure CAUSE indicates a syscall.
-  csrr t0, cause
-  li t1, CAUSE_SYSCALL
+  csrr t0, scause
+  li t1, CAUSE_SCALL
   bne t0, t1, fail
 
   # We're done.
index 4845338b92a0acd458e8f789013055f0975d960c..e45c66321f424bdeebae728930c2252b584ae028 100644 (file)
 #include "riscv_test.h"
 #include "test_macros.h"
 
-RVTEST_RV64S
+RVTEST_RV64M
 RVTEST_CODE_BEGIN
 
-  # clear pending IPIs then enable interrupts
-  la a0, handler
-  csrw evec, a0
-  csrw clear_ipi, x0
-  li a0, SR_EI | (1 << (IRQ_IPI + SR_IM_SHIFT))
-  csrs status, a0
+  # enable interrupts
+  csrs mstatus, MSTATUS_IE
 
-  # wait for all cores to boot
+  # get a unique core id
   la a0, coreid
   li a1, 1
-  amoadd.w x0, a1, 0(a0)
-  lw a3, 4(x0)
-  1: lw a1, 0(a0)
-  blt a1, a3, 1b
+  amoadd.w a2, a1, (a0)
+  
+  # for now, only run this on core 0
+  1:li a3, 1
+  bgeu a2, a3, 1b
+  
+  # wait for all cores to boot
+  1: lw a1, (a0)
+  bltu a1, a3, 1b
 
   # IPI dominoes
   csrr a0, hartid
@@ -36,7 +37,7 @@ RVTEST_CODE_BEGIN
   csrw send_ipi, a0
   1: j 1b
 
-  handler:
+mtvec:
   csrr a0, hartid
   bnez a0, 2f
   RVTEST_PASS
index 0a90a6015dc47b49c985e9278ccbab18523117ed..584ced76109ed6cdd4aebc6cb57d8f9f388b1f67 100644 (file)
@@ -17,11 +17,11 @@ RVTEST_CODE_BEGIN
   li s8, 0         # number of taken timer interrupts
   li s9, 10        # how many interrupts to run for
   la a0, handler
-  csrw evec, a0
-  csrw compare, 1
-  csrw count, 0
-  li a0, SR_EI | (1 << (IRQ_TIMER + SR_IM_SHIFT))
-  csrs status, a0
+  csrw stvec, a0
+  csrw stimecmp, 1
+  csrw stime, 0
+  li a0, SSTATUS_IE | SSTATUS_TIE
+  csrs sstatus, a0
 
   # advance an LFSR 1000 times
   li s0, 1023
@@ -36,7 +36,7 @@ RVTEST_CODE_BEGIN
   add s4, s4, 1
   bltu s8, s9, 1b
 
-  csrc status, SR_EI
+  csrc sstatus, SSTATUS_IE
 
   # make sure the LFSR was computed correctly
   li s1, 1023
@@ -54,16 +54,16 @@ RVTEST_CODE_BEGIN
 
 handler:
   li TESTNUM, 3
-  csrr t0, cause
+  csrr t0, scause
   bgez t0, fail
 
   sll t0, t0, 1
   addi t0, t0, -2*IRQ_TIMER
   bnez t0, fail
 
-  csrr t0, count
+  csrr t0, stime
   addi t0, t0, 999
-  csrw compare, t0
+  csrw stimecmp, t0
 
   add s8, s8, 1
 
index 95c8647c3de91d56005aa70f75c63948eb42542e..bf5cd33ab82c33be6f751427082e621c6ebcc31e 100644 (file)
@@ -7,12 +7,12 @@ rv64uf_sc_tests = \
        ldst move structural \
 
 rv64uf_sc_vec_tests = \
-       fadd fcmp fcvt fcvt_w fmadd fmin fsgnj \
+#      fadd fcmp fcvt fcvt_w fmadd fmin fsgnj \
 
 rv64uf_p_tests = $(addprefix rv64uf-p-, $(rv64uf_sc_tests))
 rv64uf_v_tests = $(addprefix rv64uf-v-, $(rv64uf_sc_tests))
-rv64uf_p_vec_tests = $(addprefix rv64uf-p-vec-, $(rv64uf_sc_vec_tests))
-rv64uf_pt_vec_tests = $(addprefix rv64uf-pt-vec-, $(rv64uf_sc_vec_tests))
-rv64uf_v_vec_tests = $(addprefix rv64uf-v-vec-, $(rv64uf_sc_vec_tests))
+#rv64uf_p_vec_tests = $(addprefix rv64uf-p-vec-, $(rv64uf_sc_vec_tests))
+#rv64uf_pt_vec_tests = $(addprefix rv64uf-pt-vec-, $(rv64uf_sc_vec_tests))
+#rv64uf_v_vec_tests = $(addprefix rv64uf-v-vec-, $(rv64uf_sc_vec_tests))
 
 spike_tests += $(rv64uf_p_tests) $(rv64uf_v_tests) $(rv64uf_p_vec_tests) $(rv64uf_pt_vec_tests) $(rv64uf_v_vec_tests)
index fd4ac41e1a8e872f0593a7406d54b959ee45c0d7..a0f974ddc8d8f74aad4af8cbc1612ea204ba6a53 100644 (file)
@@ -30,17 +30,17 @@ rv64ui_mc_tests = \
        lrsc
 
 rv64ui_sc_vec_tests = \
-       add addi addiw addw \
-       and andi \
-       lui \
-       mul mulh mulhsu mulhu mulw \
-       or ori \
-       sll slli slliw sllw \
-       slt slti sltiu sltu \
-       sra srai sraiw sraw \
-       srl srli srliw srlw \
-       sub subw \
-       xor xori \
+       #add addi addiw addw \
+       #and andi \
+       #lui \
+       #mul mulh mulhsu mulhu mulw \
+       #or ori \
+       #sll slli slliw sllw \
+       #slt slti sltiu sltu \
+       #sra srai sraiw sraw \
+       #srl srli srliw srlw \
+       #sub subw \
+       #xor xori \
 
 rv64ui_p_tests = $(addprefix rv64ui-p-, $(rv64ui_sc_tests))
 rv64ui_pm_tests = $(addprefix rv64ui-pm-, $(rv64ui_mc_tests))
index 0300eae45b5e8f4d9c74207a87b9445f1a9795ec..6c4904efa79846337384db58e89a4349cc5faf33 100644 (file)
 RVTEST_RV64U
 RVTEST_CODE_BEGIN
 
-# wait for all cores to boot
+# get a unique core id
 la a0, coreid
 li a1, 1
 amoadd.w a2, a1, (a0)
-lw a3, 4(x0)
+
+# for now, only run this on core 0
+1:li a3, 1
+bgeu a2, a3, 1b
+
 1: lw a1, (a0)
-blt a1, a3, 1b
+bltu a1, a3, 1b
 
 # make sure that sc without a reservation fails.
 TEST_CASE( 2, a4, 1, \