Allow users to set the ISA and ABI of the target machine
While this is an SDK for the Freedom U platform, which right now is RV64GC only, it's also where I've been pointing people who want to build Linux and a userspace. This patch allows users to change the ISA and ABI of the target. Most of the testing effort has been targeted towards RV64GC, but I think it's good to let people try other targets (and then hopefully fix them :)).
This commit is contained in:
parent
9a44dcdb1e
commit
2bd49f3e12
23
Makefile
23
Makefile
@ -1,5 +1,7 @@
|
|||||||
RISCV ?= $(CURDIR)/toolchain
|
RISCV ?= $(CURDIR)/toolchain
|
||||||
PATH := $(RISCV)/bin:$(PATH)
|
PATH := $(RISCV)/bin:$(PATH)
|
||||||
|
ISA ?= rv64imafdc
|
||||||
|
ABI ?= lp64d
|
||||||
|
|
||||||
srcdir := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
srcdir := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||||
srcdir := $(srcdir:/=)
|
srcdir := $(srcdir:/=)
|
||||||
@ -43,13 +45,17 @@ target := riscv64-unknown-linux-gnu
|
|||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(hex)
|
all: $(hex)
|
||||||
@echo
|
@echo
|
||||||
|
@echo This image has been generated for an ISA of $(ISA) and an ABI of $(ABI)
|
||||||
@echo Find the SD-card image in work/bbl.bin
|
@echo Find the SD-card image in work/bbl.bin
|
||||||
@echo Program it with: dd if=work/bbl.bin of=/dev/sd-your-card bs=1M
|
@echo Program it with: dd if=work/bbl.bin of=/dev/sd-your-card bs=1M
|
||||||
@echo
|
@echo
|
||||||
|
|
||||||
$(toolchain_dest)/bin/$(target)-gcc: $(toolchain_srcdir)
|
$(toolchain_dest)/bin/$(target)-gcc: $(toolchain_srcdir)
|
||||||
mkdir -p $(toolchain_wrkdir)
|
mkdir -p $(toolchain_wrkdir)
|
||||||
cd $(toolchain_wrkdir); $(toolchain_srcdir)/configure --prefix=$(toolchain_dest)
|
cd $(toolchain_wrkdir); $(toolchain_srcdir)/configure \
|
||||||
|
--prefix=$(toolchain_dest) \
|
||||||
|
--with-isa=$(ISA) \
|
||||||
|
--with-abi=$(ABI)
|
||||||
$(MAKE) -C $(toolchain_wrkdir) linux
|
$(MAKE) -C $(toolchain_wrkdir) linux
|
||||||
sed 's/^#define LINUX_VERSION_CODE.*/#define LINUX_VERSION_CODE 263682/' -i $(toolchain_dest)/sysroot/usr/include/linux/version.h
|
sed 's/^#define LINUX_VERSION_CODE.*/#define LINUX_VERSION_CODE 263682/' -i $(toolchain_dest)/sysroot/usr/include/linux/version.h
|
||||||
|
|
||||||
@ -70,6 +76,17 @@ $(linux_wrkdir)/.config: $(linux_defconfig) $(linux_srcdir)
|
|||||||
mkdir -p $(dir $@)
|
mkdir -p $(dir $@)
|
||||||
cp -p $< $@
|
cp -p $< $@
|
||||||
$(MAKE) -C $(linux_srcdir) O=$(linux_wrkdir) ARCH=riscv olddefconfig
|
$(MAKE) -C $(linux_srcdir) O=$(linux_wrkdir) ARCH=riscv olddefconfig
|
||||||
|
echo $(ISA)
|
||||||
|
echo $(filter rv32%,$(ISA))
|
||||||
|
ifeq (,$(filter rv%c,$(ISA)))
|
||||||
|
sed 's/^.*CONFIG_RISCV_ISA_C.*$$/CONFIG_RISCV_ISA_C=n/' -i $@
|
||||||
|
$(MAKE) -C $(linux_srcdir) O=$(linux_wrkdir) ARCH=riscv olddefconfig
|
||||||
|
endif
|
||||||
|
ifeq ($(ISA),$(filter rv32%,$(ISA)))
|
||||||
|
sed 's/^.*CONFIG_ARCH_RV32I.*$$/CONFIG_ARCH_RV32I=y/' -i $@
|
||||||
|
sed 's/^.*CONFIG_ARCH_RV64I.*$$/CONFIG_ARCH_RV64I=n/' -i $@
|
||||||
|
$(MAKE) -C $(linux_srcdir) O=$(linux_wrkdir) ARCH=riscv olddefconfig
|
||||||
|
endif
|
||||||
|
|
||||||
$(vmlinux): $(linux_srcdir) $(linux_wrkdir)/.config $(sysroot_stamp)
|
$(vmlinux): $(linux_srcdir) $(linux_wrkdir)/.config $(sysroot_stamp)
|
||||||
$(MAKE) -C $< O=$(linux_wrkdir) \
|
$(MAKE) -C $< O=$(linux_wrkdir) \
|
||||||
@ -94,7 +111,7 @@ $(bbl): $(pk_srcdir) $(vmlinux_stripped)
|
|||||||
--with-payload=$(vmlinux_stripped) \
|
--with-payload=$(vmlinux_stripped) \
|
||||||
--enable-logo \
|
--enable-logo \
|
||||||
--with-logo=$(abspath conf/sifive_logo.txt)
|
--with-logo=$(abspath conf/sifive_logo.txt)
|
||||||
CFLAGS="-mabi=lp64d -march=rv64imafdc" $(MAKE) -C $(pk_wrkdir)
|
CFLAGS="-mabi=$(ABI) -march=$(ISA)" $(MAKE) -C $(pk_wrkdir)
|
||||||
|
|
||||||
$(bin): $(bbl)
|
$(bin): $(bbl)
|
||||||
$(target)-objcopy -S -O binary --change-addresses -0x80000000 $< $@
|
$(target)-objcopy -S -O binary --change-addresses -0x80000000 $< $@
|
||||||
@ -134,4 +151,4 @@ clean:
|
|||||||
|
|
||||||
.PHONY: sim
|
.PHONY: sim
|
||||||
sim: $(spike) $(bbl)
|
sim: $(spike) $(bbl)
|
||||||
$(spike) -p4 $(bbl)
|
$(spike) --isa=$(ISA) -p4 $(bbl)
|
||||||
|
Loading…
Reference in New Issue
Block a user