Skip to content

Commit 042811f

Browse files
committed
Added vector and floating point registers in CSRs depending on extensions
1 parent dc18c38 commit 042811f

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

Makefile

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@ SAIL_DEFAULT_INST = $(SAIL_RISCV_MODEL_DIR)/riscv_insts_base.sail \
3131
$(SAIL_CHERI_MODEL_DIR)/cheri_insts_begin.sail \
3232
$(SAIL_CHERI_MODEL_DIR)/cheri_insts.sail \
3333
$(SAIL_CHERI_MODEL_DIR)/cheri_insts_cext.sail \
34-
$(SAIL_CHERI_MODEL_DIR)/cheri_insts_end.sail
34+
$(SAIL_CHERI_MODEL_DIR)/cheri_insts_end.sail \
35+
$(SAIL_RISCV_MODEL_DIR)/riscv_insts_fext.sail \
36+
$(SAIL_RISCV_MODEL_DIR)/riscv_insts_cfext.sail \
37+
$(SAIL_RISCV_MODEL_DIR)/riscv_insts_dext.sail \
38+
$(SAIL_RISCV_MODEL_DIR)/riscv_insts_zfh.sail \
39+
$(SAIL_RISCV_MODEL_DIR)/riscv_insts_zfa.sail \
40+
3541
# $(SAIL_FD_INST) \
3642
# $(SAIL_RISCV_MODEL_DIR)/riscv_insts_aext.sail
3743
SAIL_SEQ_INST = $(SAIL_DEFAULT_INST) $(SAIL_RISCV_MODEL_DIR)/riscv_jalr_seq.sail
@@ -46,24 +52,24 @@ SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_vext_control.sail
4652
SAIL_SYS_SRCS += $(SAIL_CHERI_MODEL_DIR)/cheri_sys_exceptions.sail
4753
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_sync_exception.sail
4854
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_next_control.sail
49-
# SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_softfloat_interface.sail
50-
# SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_fdext_regs.sail
51-
# SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_fdext_control.sail
55+
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_softfloat_interface.sail
56+
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_fdext_regs.sail
57+
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_fdext_control.sail
5258
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_csr_ext.sail
5359
SAIL_SYS_SRCS += $(SAIL_RISCV_MODEL_DIR)/riscv_sys_control.sail
5460
SAIL_SYS_SRCS += $(SAIL_CHECK_SRCS)
5561

5662
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_utils.sail
57-
# SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp_utils.sail
63+
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp_utils.sail
5864
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_vset.sail
5965
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_arith.sail
60-
# SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp.sail
66+
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp.sail
6167
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_mem.sail
6268
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_mask.sail
6369
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_vm.sail
64-
# SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp_vm.sail
70+
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp_vm.sail
6571
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_red.sail
66-
# SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp_red.sail
72+
SAIL_DEFAULT_INST += $(SAIL_RISCV_MODEL_DIR)/riscv_insts_vext_fp_red.sail
6773

6874
SAIL_RV32_VM_SRCS = $(SAIL_RISCV_MODEL_DIR)/riscv_vmem_sv32.sail \
6975
$(SAIL_RISCV_MODEL_DIR)/riscv_vmem_rv32.sail
@@ -87,6 +93,7 @@ PRELUDE = $(SAIL_RISCV_MODEL_DIR)/prelude.sail \
8793
$(SAIL_RISCV_MODEL_DIR)/prelude_mem.sail
8894

8995
SAIL_REGS_SRCS = $(SAIL_CHERI_MODEL_DIR)/cheri_reg_type.sail \
96+
$(SAIL_RISCV_MODEL_DIR)/riscv_freg_type.sail \
9097
$(SAIL_RISCV_MODEL_DIR)/riscv_csr_map.sail \
9198
$(SAIL_CHERI_MODEL_DIR)/cheri_scr_map.sail \
9299
$(SAIL_CHERI_MODEL_DIR)/cheri_vmem_types.sail \
@@ -181,15 +188,14 @@ BBV_DIR?=../bbv
181188

182189
C_WARNINGS ?=
183190
#-Wall -Wextra -Wno-unused-label -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-unused-function
184-
C_INCS = $(addprefix $(SAIL_RISCV_DIR)/c_emulator/,riscv_prelude.h riscv_platform_impl.h riscv_platform.h)
185-
C_SRCS = $(addprefix $(SAIL_RISCV_DIR)/c_emulator/,riscv_prelude.c riscv_platform_impl.c riscv_platform.c)
191+
C_INCS = $(addprefix $(SAIL_RISCV_DIR)/c_emulator/,riscv_prelude.h riscv_platform_impl.h riscv_platform.h riscv_softfloat.h)
192+
C_SRCS = $(addprefix $(SAIL_RISCV_DIR)/c_emulator/,riscv_prelude.c riscv_platform_impl.c riscv_platform.c riscv_softfloat.c)
186193

187194
SOFTFLOAT_DIR = $(SAIL_RISCV_DIR)/c_emulator/SoftFloat-3e
188195
SOFTFLOAT_INCDIR = $(SOFTFLOAT_DIR)/source/include
189196
SOFTFLOAT_LIBDIR = $(SOFTFLOAT_DIR)/build/Linux-RISCV-GCC
190197
SOFTFLOAT_FLAGS = -I $(SOFTFLOAT_INCDIR)
191-
SOFTFLOAT_LIBS =
192-
#$(SOFTFLOAT_LIBDIR)/softfloat.a
198+
SOFTFLOAT_LIBS = $(SOFTFLOAT_LIBDIR)/softfloat.a
193199
SOFTFLOAT_SPECIALIZE_TYPE = RISCV
194200

195201
GMP_FLAGS = $(shell pkg-config --cflags gmp)

src/cheri_addr_checks.sail

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,9 @@ function ext_check_CSR (csrno : bits(12), p : Privilege, isWrite : bool) -> bool
243243
0xC20 => haveVExt() & not(isWrite), // vl
244244
0xC21 => haveVExt() & not(isWrite), // vtype
245245
0xC22 => haveVExt() & not(isWrite), // vlenb
246+
0x001 => haveFExt() | haveDExt(), // fflags
247+
0x002 => haveFExt() | haveDExt(), // frm
248+
0x003 => haveFExt() | haveDExt(), // fcsr
246249
_ => false
247250
} else {
248251
true

0 commit comments

Comments
 (0)