diff --git a/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile b/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile index bd24333a2..8116f573d 100644 --- a/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile +++ b/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile @@ -3,6 +3,10 @@ CC = $(CROSS)gcc OBJCOPY = $(CROSS)objcopy ARCH = $(CROSS)ar +# Generate GCC_VERSION in number format +GCC_VERSION = $(shell $(CC) --version | grep ^$(CC) | sed 's/^.* //g' | awk -F. '{ printf("%d%02d%02d"), $$1, $$2, $$3 }') +GCC_VERSION_NEED_ZICSR = "110100" + BUILD_DIR = build RTOS_SOURCE_DIR = $(abspath ../../Source) DEMO_SOURCE_DIR = $(abspath ../Common/Minimal) @@ -14,12 +18,19 @@ CPPFLAGS = \ -I $(RTOS_SOURCE_DIR)/include \ -I $(RTOS_SOURCE_DIR)/portable/GCC/RISC-V \ -I $(RTOS_SOURCE_DIR)/portable/GCC/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions -CFLAGS = -march=rv32imac -mabi=ilp32 -mcmodel=medany \ +CFLAGS = -mabi=ilp32 -mcmodel=medany \ -Wall \ -fmessage-length=0 \ -ffunction-sections \ -fdata-sections \ -fno-builtin-printf + +ifeq ($(shell test $(GCC_VERSION) -ge $(GCC_VERSION_NEED_ZICSR) && echo true),true) + CFLAGS += -march=rv32imac_zicsr +else + CFLAGS += -march=rv32imac +endif + LDFLAGS = -nostartfiles -Tfake_rom.lds \ -march=rv32imac -mabi=ilp32 -mcmodel=medany \ -Xlinker --gc-sections \ diff --git a/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/Makefile b/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/Makefile index e4d8ca958..6253c9763 100644 --- a/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/Makefile +++ b/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/Makefile @@ -9,9 +9,19 @@ LD = riscv64-unknown-elf-gcc SIZE = riscv64-unknown-elf-size MAKE = make +# Generate GCC_VERSION in number format +GCC_VERSION = $(shell $(CC) --version | grep ^$(CC) | sed 's/^.* //g' | awk -F. '{ printf("%d%02d%02d"), $$1, $$2, $$3 }') +GCC_VERSION_NEED_ZICSR = "110100" + CFLAGS += $(INCLUDE_DIRS) -DportasmHANDLE_INTERRUPT=handle_trap -fmessage-length=0 \ - -march=rv32imac_zicsr -mabi=ilp32 -mcmodel=medlow -ffunction-sections -fdata-sections \ + -mabi=ilp32 -mcmodel=medlow -ffunction-sections -fdata-sections \ -Wno-unused-parameter -nostartfiles -g3 -Os + +ifeq ($(shell test $(GCC_VERSION) -ge $(GCC_VERSION_NEED_ZICSR) && echo true),true) + CFLAGS += -march=rv32imac_zicsr +else + CFLAGS += -march=rv32imac +endif ifeq ($(PICOLIBC),1) CFLAGS += --specs=picolibc.specs -DPICOLIBC_INTEGER_PRINTF_SCANF