Commit 9e38118b authored by Adam Wujek's avatar Adam Wujek

Kconfig: add option to use compressed instructions for RISCV

There is another commit in PPSI repo doing the same for PPSI.
Signed-off-by: 's avatarAdam Wujek <dev_public@wujek.eu>
parent 42d8028c
......@@ -16,6 +16,13 @@ config ARCH_RISCV
endchoice
config RISCV_COMP_INSTR
bool "Use compressed instructions for RISCV"
depends on ARCH_RISCV
default n
help
Use compressed instructions for RISCV. This changes the compiler flags at build time.
choice
prompt "Target Platform"
......
......@@ -8,6 +8,9 @@ CROSS_COMPILE_RISCV ?= riscv-elf-
CROSS_COMPILE-$(CONFIG_ARCH_LM32) ?= $(CROSS_COMPILE_LM32)
CROSS_COMPILE-$(CONFIG_ARCH_RISCV) ?= $(CROSS_COMPILE_RISCV)
# use compressed instructions for RISCV
USE-COMP-INSTR-$(CONFIG_RISCV_COMP_INSTR) = c
# use a cross compiler for all architectures
CROSS_COMPILE ?= $(CROSS_COMPILE-y)
......@@ -94,12 +97,12 @@ obj-$(CONFIG_EMBEDDED_NODE) += \
lib/ppsi-wrappers.o
cflags-$(CONFIG_ARCH_LM32) += -mmultiply-enabled -mbarrel-shift-enabled
cflags-$(CONFIG_ARCH_RISCV) += -march=rv32im -mabi=ilp32
cflags-$(CONFIG_ARCH_RISCV) += -march=rv32im$(USE-COMP-INSTR-y) -mabi=ilp32
ldflags-$(CONFIG_ARCH_LM32) = -mmultiply-enabled -mbarrel-shift-enabled \
-nostdlib -T $(LDS-y)
ldflags-$(CONFIG_ARCH_RISCV) = -march=rv32im -mabi=ilp32 \
ldflags-$(CONFIG_ARCH_RISCV) = -march=rv32im$(USE-COMP-INSTR-y) -mabi=ilp32 \
-nostdlib -T $(LDS-y)
asflags-$(CONFIG_ARCH_RISCV) += -march=rv32im -mabi=ilp32
asflags-$(CONFIG_ARCH_RISCV) += -march=rv32im$(USE-COMP-INSTR-y) -mabi=ilp32
arch-files-$(CONFIG_ARCH_LM32) = $(OUTPUT).bram $(OUTPUT).vhd $(OUTPUT).mif
arch-files-$(CONFIG_ARCH_RISCV) = $(OUTPUT).bram $(OUTPUT).vhd $(OUTPUT).mif
......@@ -178,10 +181,10 @@ $(obj-ppsi): gitmodules
$(MAKE) -C $(PPSI) ppsi.a WRPCSW_ROOT=.. \
CROSS_COMPILE=$(CROSS_COMPILE) CONFIG_NO_PRINTF=y \
USER_CFLAGS="$(PPSI_USER_CFLAGS)" \
CPU_ARCH=$(CPU_ARCH)
CPU_ARCH=$(CPU_ARCH) \
sdb-lib/libsdbfs.a:
$(MAKE) -C sdb-lib CPU_ARCH=$(CPU_ARCH)
$(MAKE) -C sdb-lib CPU_ARCH=$(CPU_ARCH) USE-COMP-INSTR-y=$(USE-COMP-INSTR-y)
$(OUTPUT).elf: $(LDS-y) $(AUTOCONF) gitmodules config.o $(OBJS)
$(CC) $(CFLAGS) -D__GIT_VER__="\"$(GIT_VER)\"" -D__GIT_USR__="\"$(GIT_USR)\"" -c revision.c
......
......@@ -4,6 +4,7 @@
#
# CONFIG_ARCH_LM32 is not set
CONFIG_ARCH_RISCV=y
# CONFIG_RISCV_COMP_INSTR is not set
CONFIG_TARGET_GENERIC_PHY_8BIT=y
# CONFIG_TARGET_GENERIC_PHY_16BIT is not set
# CONFIG_TARGET_WR_SWITCH is not set
......
......@@ -20,7 +20,7 @@ OBJDUMP = $(CROSS_COMPILE)objdump
ENDIAN := $(shell ./check-endian $(CC))
CFLAGS-CPU-LM32 = -mmultiply-enabled -mbarrel-shift-enabled
CFLAGS-CPU-RISCV = -march=rv32im -mabi=ilp32
CFLAGS-CPU-RISCV = -march=rv32im$(USE-COMP-INSTR-y) -mabi=ilp32
CFLAGS = -Wall -ggdb -Os $(CFLAGS-CPU-$(CPU_ARCH))
CFLAGS += -I../include/linux -I../include # for <sdb.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment