diff --git a/Makefile b/Makefile index f41ccb0..3a5d60a 100644 --- a/Makefile +++ b/Makefile @@ -79,11 +79,12 @@ READELF = $(CROSS_COMPILE)readelf INC_PATH += $(WORK_DIR)/include $(addsuffix /include/, $(addprefix $(AM_HOME)/, $(LIBS))) INCFLAGS += $(addprefix -I, $(INC_PATH)) +ARCH_H := arch/$(ARCH).h CFLAGS += -O2 -MMD -Wall -Werror $(INCFLAGS) \ -D__ISA__=\"$(ISA)\" -D__ISA_$(shell echo $(ISA) | tr a-z A-Z)__ \ -D__ARCH__=$(ARCH) -D__ARCH_$(shell echo $(ARCH) | tr a-z A-Z | tr - _) \ -D__PLATFORM__=$(PLATFORM) -D__PLATFORM_$(shell echo $(PLATFORM) | tr a-z A-Z | tr - _) \ - -DARCH_H=\"arch/$(ARCH).h\" \ + -DARCH_H=\"$(ARCH_H)\" \ -fno-asynchronous-unwind-tables -fno-builtin -fno-stack-protector \ -Wno-main -U_FORTIFY_SOURCE CXXFLAGS += $(CFLAGS) -ffreestanding -fno-rtti -fno-exceptions diff --git a/am/include/arch/riscv32-nemu.h b/am/include/arch/riscv.h similarity index 83% rename from am/include/arch/riscv32-nemu.h rename to am/include/arch/riscv.h index 29eaea2..9c9de20 100644 --- a/am/include/arch/riscv32-nemu.h +++ b/am/include/arch/riscv.h @@ -7,7 +7,12 @@ struct Context { void *pdir; }; +#ifdef __riscv_e +#define GPR1 gpr[15] // a5 +#else #define GPR1 gpr[17] // a7 +#endif + #define GPR2 gpr[0] #define GPR3 gpr[0] #define GPR4 gpr[0] diff --git a/am/include/arch/riscv64-nemu.h b/am/include/arch/riscv64-nemu.h deleted file mode 100644 index 8a3fb4e..0000000 --- a/am/include/arch/riscv64-nemu.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef ARCH_H__ -#define ARCH_H__ - -struct Context { - // TODO: fix the order of these members to match trap.S - uintptr_t mepc, mcause, gpr[32], mstatus; - void *pdir; -}; - -#define GPR1 gpr[17] // a7 -#define GPR2 gpr[0] -#define GPR3 gpr[0] -#define GPR4 gpr[0] -#define GPRx gpr[0] -#endif diff --git a/am/include/arch/riscv64-npc.h b/am/include/arch/riscv64-npc.h deleted file mode 100644 index d28ce47..0000000 --- a/am/include/arch/riscv64-npc.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef ARCH_H__ -#define ARCH_H__ - -struct Context { - // TODO: fix the order of these members to match trap.S - uintptr_t mepc, mcause, gpr[32], mstatus; -}; - -#define GPR1 gpr[17] // a7 -#define GPR2 gpr[0] -#define GPR3 gpr[0] -#define GPR4 gpr[0] -#define GPRx gpr[0] -#endif diff --git a/am/include/arch/spike.h b/am/include/arch/spike.h deleted file mode 100644 index ea47a63..0000000 --- a/am/include/arch/spike.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef ARCH_H__ -#define ARCH_H__ - -struct Context { - uintptr_t gpr[1]; -}; - -#define GPR1 gpr[0] -#define GPR2 gpr[0] -#define GPR3 gpr[0] -#define GPR4 gpr[0] -#define GPRx gpr[0] - -#endif diff --git a/scripts/isa/riscv.mk b/scripts/isa/riscv.mk index adcc44f..e478842 100644 --- a/scripts/isa/riscv.mk +++ b/scripts/isa/riscv.mk @@ -3,3 +3,6 @@ COMMON_CFLAGS := -fno-pic -march=rv64g -mcmodel=medany -mstrict-align CFLAGS += $(COMMON_CFLAGS) -static ASFLAGS += $(COMMON_CFLAGS) -O0 LDFLAGS += -melf64lriscv + +# overwrite ARCH_H defined in $(AM_HOME)/Makefile +ARCH_H := arch/riscv.h