files for test suite
This commit is contained in:
parent
06400d692c
commit
fdbee47efc
|
@ -0,0 +1,37 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
START_ADDRES := $(shell readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$2 }')
|
||||||
|
END_ADDRES := $(shell readelf -s $(<) | grep "end_signature" | awk '{print "0x"$2 }')
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) \
|
||||||
|
-B `readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$$2 }'`\
|
||||||
|
-E `readelf -s $(<) | grep "end_signature" | awk '{print "0x"$$2 }'` -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv32-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv32-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) \
|
||||||
|
-B `readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$$2 }'`\
|
||||||
|
-E `readelf -s $(<) | grep "end_signature" | awk '{print "0x"$$2 }'` -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv32-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv32-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
START_ADDRES := $(shell readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$2 }')
|
||||||
|
END_ADDRES := $(shell readelf -s $(<) | grep "end_signature" | awk '{print "0x"$2 }')
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) \
|
||||||
|
-B `readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$$2 }'`\
|
||||||
|
-E `readelf -s $(<) | grep "end_signature" | awk '{print "0x"$$2 }'` -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv32-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv32-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
START_ADDRES := $(shell readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$2 }')
|
||||||
|
END_ADDRES := $(shell readelf -s $(<) | grep "end_signature" | awk '{print "0x"$2 }')
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) \
|
||||||
|
-B `readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$$2 }'`\
|
||||||
|
-E `readelf -s $(<) | grep "end_signature" | awk '{print "0x"$$2 }'` -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv32-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv32-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
START_ADDRES := $(shell readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$2 }')
|
||||||
|
END_ADDRES := $(shell readelf -s $(<) | grep "end_signature" | awk '{print "0x"$2 }')
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) \
|
||||||
|
-B `readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$$2 }'`\
|
||||||
|
-E `readelf -s $(<) | grep "end_signature" | awk '{print "0x"$$2 }'` -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv32-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv32-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
START_ADDRES := $(shell readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$2 }')
|
||||||
|
END_ADDRES := $(shell readelf -s $(<) | grep "end_signature" | awk '{print "0x"$2 }')
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) -R64 -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv64-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) -R64 -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv64-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
START_ADDRES := $(shell readelf -s $(<) | grep "begin_signature" | awk '{print "0x"$2 }')
|
||||||
|
END_ADDRES := $(shell readelf -s $(<) | grep "end_signature" | awk '{print "0x"$2 }')
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) -R64 -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv64-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) -R64 -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv64-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
TARGET_SIM ?= /home/marius/Work/RISC-V/RISC-V-TLM/RISCV_TLM
|
||||||
|
TARGET_FLAGS ?= $(RISCV_TARGET_FLAGS)
|
||||||
|
ifeq ($(shell command -v $(TARGET_SIM) 2> /dev/null),)
|
||||||
|
$(error Target simulator executable '$(TARGET_SIM)` not found)
|
||||||
|
endif
|
||||||
|
|
||||||
|
RUN_TARGET=\
|
||||||
|
$(TARGET_SIM) $(TARGET_FLAGS) -R64 -T \
|
||||||
|
$(<).hex ;\
|
||||||
|
mv *output $(work_dir_isa)/
|
||||||
|
|
||||||
|
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||||
|
RISCV_GCC ?= $(RISCV_PREFIX)gcc
|
||||||
|
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump
|
||||||
|
RISCV_GCC_OPTS ?= -g -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles $(RVTEST_DEFINES)
|
||||||
|
|
||||||
|
COMPILE_CMD = $$(RISCV_GCC) $(1) $$(RISCV_GCC_OPTS) \
|
||||||
|
-I$(ROOTDIR)/riscv-test-suite/env/ \
|
||||||
|
-I$(TARGETDIR)/$(RISCV_TARGET)/ \
|
||||||
|
-T$(TARGETDIR)/$(RISCV_TARGET)/link.ld \
|
||||||
|
$$(<) -o $$@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OBJ_CMD = $$(RISCV_OBJDUMP) $$@ -D > $$@.objdump; \
|
||||||
|
$$(RISCV_OBJDUMP) $$@ --source > $$@.debug
|
||||||
|
|
||||||
|
OBJ_HEX = riscv64-unknown-elf-objcopy -Oihex $$@ $$@.hex
|
||||||
|
|
||||||
|
COMPILE_TARGET=\
|
||||||
|
$(COMPILE_CMD); \
|
||||||
|
$(OBJ_CMD);\
|
||||||
|
$(OBJ_HEX)
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
OUTPUT_ARCH( "riscv" )
|
||||||
|
ENTRY(rvtest_entry_point)
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = 0x00000000;
|
||||||
|
.text.init : { *(.text.init) }
|
||||||
|
. = ALIGN(0x1000);
|
||||||
|
/* .tohost : { *(.tohost) } */
|
||||||
|
. = ALIGN(0x1000);
|
||||||
|
.text : { *(.text) }
|
||||||
|
. = ALIGN(0x1000);
|
||||||
|
.data : { *(.data) }
|
||||||
|
.data.string : { *(.data.string)}
|
||||||
|
.bss : { *(.bss) }
|
||||||
|
_end = .;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,349 @@
|
||||||
|
#ifndef _COMPLIANCE_MODEL_H
|
||||||
|
#define _COMPLIANCE_MODEL_H
|
||||||
|
|
||||||
|
#define TESTNUM gp
|
||||||
|
|
||||||
|
#if XLEN == 64
|
||||||
|
#define ALIGNMENT 3
|
||||||
|
#else
|
||||||
|
#define ALIGNMENT 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//RV_COMPLIANCE_HALT
|
||||||
|
|
||||||
|
#define RVMODEL_HALT \
|
||||||
|
la t0, begin_signature; \
|
||||||
|
la t1, end_signature; \
|
||||||
|
fence; \
|
||||||
|
ecall
|
||||||
|
|
||||||
|
#define RVMODEL_BOOT \
|
||||||
|
.align 6; \
|
||||||
|
.weak stvec_handler; \
|
||||||
|
.weak mtvec_handler; \
|
||||||
|
/* reset vector */ \
|
||||||
|
j reset_vector; \
|
||||||
|
.align 2; \
|
||||||
|
trap_vector: \
|
||||||
|
/* test whether the test came from pass/fail */ \
|
||||||
|
csrr t5, mcause; \
|
||||||
|
li t6, CAUSE_USER_ECALL; \
|
||||||
|
beq t5, t6, write_tohost; \
|
||||||
|
li t6, CAUSE_SUPERVISOR_ECALL; \
|
||||||
|
beq t5, t6, write_tohost; \
|
||||||
|
li t6, CAUSE_MACHINE_ECALL; \
|
||||||
|
beq t5, t6, write_tohost; \
|
||||||
|
/* if an mtvec_handler is defined, jump to it */ \
|
||||||
|
la t5, mtvec_handler; \
|
||||||
|
beqz t5, 1f; \
|
||||||
|
jr t5; \
|
||||||
|
/* was it an interrupt or an exception? */ \
|
||||||
|
1: csrr t5, mcause; \
|
||||||
|
bgez t5, handle_exception; \
|
||||||
|
handle_exception: \
|
||||||
|
/* we don't know how to handle whatever the exception was */ \
|
||||||
|
other_exception: \
|
||||||
|
/* some unhandlable exception occurred */ \
|
||||||
|
1: ori gp, gp, 1337; \
|
||||||
|
write_tohost: \
|
||||||
|
sw gp, tohost, t5; \
|
||||||
|
j write_tohost; \
|
||||||
|
reset_vector: \
|
||||||
|
li a0, MSTATUS_MPP; \
|
||||||
|
csrs mstatus, a0; \
|
||||||
|
la t0, trap_vector; \
|
||||||
|
csrw mtvec, t0; \
|
||||||
|
la t0, rvtest_init; \
|
||||||
|
csrw mepc, t0; \
|
||||||
|
csrr a0, mhartid; \
|
||||||
|
mret; \
|
||||||
|
1: \
|
||||||
|
|
||||||
|
//RV_COMPLIANCE_DATA_BEGIN
|
||||||
|
#define RVMODEL_DATA_BEGIN \
|
||||||
|
.align 4; .global begin_signature; begin_signature:
|
||||||
|
|
||||||
|
//RV_COMPLIANCE_DATA_END
|
||||||
|
#define RVMODEL_DATA_END \
|
||||||
|
.align 4; .global end_signature; end_signature: \
|
||||||
|
.pushsection .tohost,"aw",@progbits; \
|
||||||
|
.align 8; .global tohost; tohost: .dword 0; \
|
||||||
|
.align 8; .global fromhost; fromhost: .dword 0; \
|
||||||
|
.popsection; \
|
||||||
|
.align 8; .global begin_regstate; begin_regstate: \
|
||||||
|
.word 128; \
|
||||||
|
.align 8; .global end_regstate; end_regstate: \
|
||||||
|
.word 4; \
|
||||||
|
.align ALIGNMENT;\
|
||||||
|
|
||||||
|
#define RVMODEL_IO_INIT
|
||||||
|
|
||||||
|
#define RVMODEL_SET_MSW_INT
|
||||||
|
|
||||||
|
|
||||||
|
#define RVMODEL_CLEAR_MSW_INT
|
||||||
|
|
||||||
|
#define RVMODEL_CLEAR_MTIMER_INT
|
||||||
|
|
||||||
|
#define RVMODEL_CLEAR_MEXT_INT
|
||||||
|
|
||||||
|
#endif // _COMPLIANCE_MODEL_H
|
||||||
|
|
||||||
|
// RISC-V Compliance IO Test Header File
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2005-2018 Imperas Software Ltd., www.imperas.com
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
|
* either express or implied.
|
||||||
|
*
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// In general the following registers are reserved
|
||||||
|
// ra, a0, t0, t1
|
||||||
|
// x1, x10 x5, x6
|
||||||
|
// new reserve x31
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef _COMPLIANCE_IO_H
|
||||||
|
#define _COMPLIANCE_IO_H
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef RVMODEL_ASSERT
|
||||||
|
# define RVMODEL_IO_QUIET
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// RV IO Macros (Character transfer by custom instruction)
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
#define STRINGIFY(x) #x
|
||||||
|
#define TOSTRING(x) STRINGIFY(x)
|
||||||
|
|
||||||
|
#define RVTEST_CUSTOM1 0x40000000
|
||||||
|
|
||||||
|
#ifdef RVMODEL_IO_QUIET
|
||||||
|
|
||||||
|
#define RVMODEL_IO_INIT
|
||||||
|
#define RVMODEL_IO_WRITE_STR(_SP, _STR)
|
||||||
|
#define RVMODEL_IO_CHECK()
|
||||||
|
#define RVMODEL_IO_ASSERT_GPR_EQ(_SP, _R, _I)
|
||||||
|
#define RVMODEL_IO_ASSERT_SFPR_EQ(_F, _R, _I)
|
||||||
|
#define RVMODEL_IO_ASSERT_DFPR_EQ(_D, _R, _I)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define RVMODEL_IO_INIT
|
||||||
|
|
||||||
|
#if (__riscv_xlen==32)
|
||||||
|
# define RSIZE 4
|
||||||
|
# define SX sw
|
||||||
|
# define LX lw
|
||||||
|
#endif
|
||||||
|
#if (__riscv_xlen==64)
|
||||||
|
# define RSIZE 8
|
||||||
|
# define SX sd
|
||||||
|
# define LX ld
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// _SP = (volatile register)
|
||||||
|
#define LOCAL_IO_PUSH(_SP) \
|
||||||
|
la _SP, begin_regstate; \
|
||||||
|
SX x1, (1*RSIZE)(_SP); \
|
||||||
|
SX x5, (5*RSIZE)(_SP); \
|
||||||
|
SX x6, (6*RSIZE)(_SP); \
|
||||||
|
SX x8, (8*RSIZE)(_SP); \
|
||||||
|
SX x10, (10*RSIZE)(_SP);
|
||||||
|
|
||||||
|
// _SP = (volatile register)
|
||||||
|
#define LOCAL_IO_POP(_SP) \
|
||||||
|
la _SP, begin_regstate; \
|
||||||
|
LX x1, (1*RSIZE)(_SP); \
|
||||||
|
LX x5, (5*RSIZE)(_SP); \
|
||||||
|
LX x6, (6*RSIZE)(_SP); \
|
||||||
|
LX x8, (8*RSIZE)(_SP); \
|
||||||
|
LX x10, (10*RSIZE)(_SP);
|
||||||
|
|
||||||
|
#define LOCAL_IO_WRITE_GPR(_R) \
|
||||||
|
mv a0, _R; \
|
||||||
|
la t0, FN_WriteA0; \
|
||||||
|
jalr t0;
|
||||||
|
|
||||||
|
#define LOCAL_IO_WRITE_FPR(_F) \
|
||||||
|
fmv.x.s a0, _F; \
|
||||||
|
jal FN_WriteA0;
|
||||||
|
|
||||||
|
#define LOCAL_IO_WRITE_DFPR(_V1, _V2) \
|
||||||
|
mv a0, _V1; \
|
||||||
|
jal FN_WriteA0; \
|
||||||
|
mv a0, _V2; \
|
||||||
|
jal FN_WriteA0; \
|
||||||
|
|
||||||
|
#define LOCAL_IO_PUTC(_R) \
|
||||||
|
la t3, RVTEST_CUSTOM1; \
|
||||||
|
sw _R, (0)(t3);
|
||||||
|
|
||||||
|
|
||||||
|
// Assertion violation: file file.c, line 1234: (expr)
|
||||||
|
// _SP = (volatile register)
|
||||||
|
// _R = GPR
|
||||||
|
// _I = Immediate
|
||||||
|
#define RVMODEL_IO_ASSERT_GPR_EQ(_SP, _R, _I) \
|
||||||
|
LOCAL_IO_PUSH(_SP) \
|
||||||
|
mv s0, _R; \
|
||||||
|
li t0, _I; \
|
||||||
|
beq s0, t0, 20002f; \
|
||||||
|
LOCAL_IO_WRITE_STR("Assertion violation: file "); \
|
||||||
|
LOCAL_IO_WRITE_STR(__FILE__); \
|
||||||
|
LOCAL_IO_WRITE_STR(", line "); \
|
||||||
|
LOCAL_IO_WRITE_STR(TOSTRING(__LINE__)); \
|
||||||
|
LOCAL_IO_WRITE_STR(": "); \
|
||||||
|
LOCAL_IO_WRITE_STR(# _R); \
|
||||||
|
LOCAL_IO_WRITE_STR("("); \
|
||||||
|
LOCAL_IO_WRITE_GPR(s0); \
|
||||||
|
LOCAL_IO_WRITE_STR(") != "); \
|
||||||
|
LOCAL_IO_WRITE_STR(# _I); \
|
||||||
|
LOCAL_IO_WRITE_STR("\n"); \
|
||||||
|
li TESTNUM, 100; \
|
||||||
|
j rvtest_code_end; \
|
||||||
|
20002: \
|
||||||
|
LOCAL_IO_POP(_SP)
|
||||||
|
|
||||||
|
|
||||||
|
// _F = FPR
|
||||||
|
// _C = GPR
|
||||||
|
// _I = Immediate
|
||||||
|
#define RVMODEL_IO_ASSERT_SFPR_EQ(_F, _C, _I) \
|
||||||
|
fmv.x.s t0, _F; \
|
||||||
|
beq _C, t0, 20003f; \
|
||||||
|
LOCAL_IO_WRITE_STR("Assertion violation: file "); \
|
||||||
|
LOCAL_IO_WRITE_STR(__FILE__); \
|
||||||
|
LOCAL_IO_WRITE_STR(", line "); \
|
||||||
|
LOCAL_IO_WRITE_STR(TOSTRING(__LINE__)); \
|
||||||
|
LOCAL_IO_WRITE_STR(": "); \
|
||||||
|
LOCAL_IO_WRITE_STR(# _F); \
|
||||||
|
LOCAL_IO_WRITE_STR("("); \
|
||||||
|
LOCAL_IO_WRITE_FPR(_F); \
|
||||||
|
LOCAL_IO_WRITE_STR(") != "); \
|
||||||
|
LOCAL_IO_WRITE_STR(# _I); \
|
||||||
|
LOCAL_IO_WRITE_STR("\n"); \
|
||||||
|
li TESTNUM, 100; \
|
||||||
|
j rvtest_code_end; \
|
||||||
|
20003:
|
||||||
|
|
||||||
|
// _D = DFPR
|
||||||
|
// _R = GPR
|
||||||
|
// _I = Immediate
|
||||||
|
#define RVMODEL_IO_ASSERT_DFPR_EQ(_D, _R, _I) \
|
||||||
|
fmv.x.d t0, _D; \
|
||||||
|
beq _R, t0, 20005f; \
|
||||||
|
LOCAL_IO_WRITE_STR("Assertion violation: file "); \
|
||||||
|
LOCAL_IO_WRITE_STR(__FILE__); \
|
||||||
|
LOCAL_IO_WRITE_STR(", line "); \
|
||||||
|
LOCAL_IO_WRITE_STR(TOSTRING(__LINE__)); \
|
||||||
|
LOCAL_IO_WRITE_STR(": "); \
|
||||||
|
LOCAL_IO_WRITE_STR(# _D); \
|
||||||
|
LOCAL_IO_WRITE_STR("("); \
|
||||||
|
LOCAL_IO_WRITE_DFPR(_D); \
|
||||||
|
LOCAL_IO_WRITE_STR(") != "); \
|
||||||
|
LOCAL_IO_WRITE_STR(# _I); \
|
||||||
|
LOCAL_IO_WRITE_STR("\n"); \
|
||||||
|
li TESTNUM, 100; \
|
||||||
|
j rvtest_code_end; \
|
||||||
|
20005:
|
||||||
|
|
||||||
|
// _SP = (volatile register)
|
||||||
|
#define LOCAL_IO_WRITE_STR(_STR) RVMODEL_IO_WRITE_STR(x31, _STR)
|
||||||
|
#define RVMODEL_IO_WRITE_STR(_SP, _STR) \
|
||||||
|
LOCAL_IO_PUSH(_SP) \
|
||||||
|
.section .data.string; \
|
||||||
|
20001: \
|
||||||
|
.string _STR; \
|
||||||
|
.section .text.init; \
|
||||||
|
la a0, 20001b; \
|
||||||
|
la t0, FN_WriteStr; \
|
||||||
|
jalr t0; \
|
||||||
|
LOCAL_IO_POP(_SP)
|
||||||
|
|
||||||
|
// generate assertion listing
|
||||||
|
#define LOCAL_CHECK() RVMODEL_IO_CHECK()
|
||||||
|
#define RVMODEL_IO_CHECK() \
|
||||||
|
li zero, -1; \
|
||||||
|
|
||||||
|
//
|
||||||
|
// FN_WriteStr: Uses a0, t0
|
||||||
|
//
|
||||||
|
FN_WriteStr:
|
||||||
|
mv t0, a0;
|
||||||
|
10000:
|
||||||
|
lbu a0, (t0);
|
||||||
|
addi t0, t0, 1;
|
||||||
|
beq a0, zero, 10000f;
|
||||||
|
LOCAL_IO_PUTC(a0);
|
||||||
|
j 10000b;
|
||||||
|
10000:
|
||||||
|
ret;
|
||||||
|
|
||||||
|
//
|
||||||
|
// FN_WriteA0: write register a0(x10) (destroys a0(x10), t0-t2(x5-x7))
|
||||||
|
//
|
||||||
|
FN_WriteA0:
|
||||||
|
mv t0, a0
|
||||||
|
// determine architectural register width
|
||||||
|
li a0, -1
|
||||||
|
srli a0, a0, 31
|
||||||
|
srli a0, a0, 1
|
||||||
|
bnez a0, FN_WriteA0_64
|
||||||
|
|
||||||
|
FN_WriteA0_32:
|
||||||
|
// reverse register when xlen is 32
|
||||||
|
li t1, 8
|
||||||
|
10000: slli t2, t2, 4
|
||||||
|
andi a0, t0, 0xf
|
||||||
|
srli t0, t0, 4
|
||||||
|
or t2, t2, a0
|
||||||
|
addi t1, t1, -1
|
||||||
|
bnez t1, 10000b
|
||||||
|
li t1, 8
|
||||||
|
j FN_WriteA0_common
|
||||||
|
|
||||||
|
FN_WriteA0_64:
|
||||||
|
// reverse register when xlen is 64
|
||||||
|
li t1, 16
|
||||||
|
10000: slli t2, t2, 4
|
||||||
|
andi a0, t0, 0xf
|
||||||
|
srli t0, t0, 4
|
||||||
|
or t2, t2, a0
|
||||||
|
addi t1, t1, -1
|
||||||
|
bnez t1, 10000b
|
||||||
|
li t1, 16
|
||||||
|
|
||||||
|
FN_WriteA0_common:
|
||||||
|
// write reversed characters
|
||||||
|
li t0, 10
|
||||||
|
10000: andi a0, t2, 0xf
|
||||||
|
blt a0, t0, 10001f
|
||||||
|
addi a0, a0, 'a'-10
|
||||||
|
j 10002f
|
||||||
|
10001: addi a0, a0, '0'
|
||||||
|
10002: LOCAL_IO_PUTC(a0)
|
||||||
|
srli t2, t2, 4
|
||||||
|
addi t1, t1, -1
|
||||||
|
bnez t1, 10000b
|
||||||
|
ret
|
||||||
|
|
||||||
|
#endif // RVMODEL_IO_QUIET
|
||||||
|
|
||||||
|
#endif // _COMPLIANCE_IO_H
|
Loading…
Reference in New Issue