Elyes Haouas has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/86053?usp=email )
Change subject: AArch64: Drop unused and deprecated ILP32 ......................................................................
AArch64: Drop unused and deprecated ILP32
GCC-15 deprecates (-mabi=ilp32), so remove unused RV32.
Change-Id: Ie1cb249541d9afd893df6dde0111ad45c8a5ff98 Signed-off-by: Elyes Haouas ehaouas@noos.fr --- M payloads/external/LinuxBoot/Kconfig M payloads/external/LinuxBoot/Makefile D payloads/external/LinuxBoot/riscv/defconfig-32 M payloads/external/Makefile.mk M src/arch/riscv/Kconfig M src/arch/riscv/Makefile.mk M src/arch/riscv/fit_payload.c M src/arch/riscv/include/arch/pmp.h M src/arch/riscv/pmp.c M src/mainboard/emulation/qemu-riscv/Kconfig M src/mainboard/emulation/qemu-riscv/Kconfig.name M src/soc/ucb/riscv/Kconfig D util/crossgcc/patches/gcc-14.2.0_rv32iafc.patch M util/qemu/Makefile.mk 14 files changed, 10 insertions(+), 174 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/53/86053/1
diff --git a/payloads/external/LinuxBoot/Kconfig b/payloads/external/LinuxBoot/Kconfig index f8a718f..7dc8299 100644 --- a/payloads/external/LinuxBoot/Kconfig +++ b/payloads/external/LinuxBoot/Kconfig @@ -33,16 +33,8 @@ help AARCH64 kernel and initramfs
-config LINUXBOOT_RISCV_RV32 - bool "RISC-V" - depends on ARCH_RISCV_RV32 - select PAYLOAD_FIT_SUPPORT - help - RISC-V kernel and initramfs - config LINUXBOOT_RISCV_RV64 bool "RISC-V" - depends on ARCH_RISCV_RV64 select PAYLOAD_FIT_SUPPORT help RISC-V kernel and initramfs @@ -96,7 +88,6 @@ default "i386/defconfig" if LINUXBOOT_X86 default "x86_64/defconfig" if LINUXBOOT_X86_64 default "arm64/defconfig" if LINUXBOOT_ARM64 - default "riscv/defconfig-32" if LINUXBOOT_RISCV_RV32 default "riscv/defconfig-64" if LINUXBOOT_RISCV_RV64 help Path to the kernel configuration file. @@ -106,7 +97,7 @@ choice prompt "Kernel binary format" default LINUXBOOT_KERNEL_BZIMAGE if LINUXBOOT_X86 || LINUXBOOT_X86_64 - default LINUXBOOT_KERNEL_UIMAGE if LINUXBOOT_ARM64 || LINUXBOOT_RISCV_RV32 || LINUXBOOT_RISCV_RV64 + default LINUXBOOT_KERNEL_UIMAGE if LINUXBOOT_ARM64 || LINUXBOOT_RISCV_RV64
config LINUXBOOT_KERNEL_BZIMAGE bool "bzImage" @@ -114,13 +105,13 @@
config LINUXBOOT_KERNEL_UIMAGE bool "uImage" - depends on LINUXBOOT_ARM64 || LINUXBOOT_RISCV_RV32 || LINUXBOOT_RISCV_RV64 + depends on LINUXBOOT_ARM64 || LINUXBOOT_RISCV_RV64
endchoice
config LINUXBOOT_DTS_FILE string "Compiled devicetree file" - depends on LINUXBOOT_ARM64 || LINUXBOOT_RISCV_RV32 || LINUXBOOT_RISCV_RV64 + depends on LINUXBOOT_ARM64 || LINUXBOOT_RISCV_RV64 default "empty.dts"
endif #LINUXBOOT_COMPILE_KERNEL @@ -152,7 +143,6 @@
config LINUXBOOT_UROOT bool "u-root" - depends on !LINUXBOOT_RISCV_RV32 # not supported by u-root help Enable u-root linuxboot mode. See http://u-root.tk/ for more information. diff --git a/payloads/external/LinuxBoot/Makefile b/payloads/external/LinuxBoot/Makefile index 83b8d6e..c9d805a 100644 --- a/payloads/external/LinuxBoot/Makefile +++ b/payloads/external/LinuxBoot/Makefile @@ -7,7 +7,6 @@ LINUX_ARCH-$(CONFIG_LINUXBOOT_X86_64) = x86_64 LINUX_ARCH-$(CONFIG_LINUXBOOT_X86) = i386 LINUX_ARCH-$(CONFIG_LINUXBOOT_ARM64) = arm64 -LINUX_ARCH-$(CONFIG_LINUXBOOT_RISCV_RV32) = riscv LINUX_ARCH-$(CONFIG_LINUXBOOT_RISCV_RV64) = riscv
ifeq ($(CONFIG_LINUXBOOT_COMPILE_KERNEL),y) diff --git a/payloads/external/LinuxBoot/riscv/defconfig-32 b/payloads/external/LinuxBoot/riscv/defconfig-32 deleted file mode 100644 index f6af0f7..0000000 --- a/payloads/external/LinuxBoot/riscv/defconfig-32 +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_ARCH_RV32I=y -CONFIG_32BIT=y -# CONFIG_PORTABLE is not set -CONFIG_NONPORTABLE=y diff --git a/payloads/external/Makefile.mk b/payloads/external/Makefile.mk index 299f1ee..d0c907d 100644 --- a/payloads/external/Makefile.mk +++ b/payloads/external/Makefile.mk @@ -388,7 +388,6 @@ LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_X86_64) = x86_64 LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_ARM) = arm LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_ARM64) = arm64 -LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_RISCV_RV32) = riscv LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_RISCV_RV64) = riscv ifeq ($(CONFIG_LINUXBOOT_CROSS_COMPILE),y) ifeq ($(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH),"") @@ -406,7 +405,6 @@ CONFIG_LINUXBOOT_X86=$(CONFIG_LINUXBOOT_X86) \ CONFIG_LINUXBOOT_ARM=$(CONFIG_LINUXBOOT_ARM) \ CONFIG_LINUXBOOT_ARM64=$(CONFIG_LINUXBOOT_ARM64) \ - CONFIG_LINUXBOOT_RISCV_RV32=$(CONFIG_LINUXBOOT_RISCV_RV32) \ CONFIG_LINUXBOOT_RISCV_RV64=$(CONFIG_LINUXBOOT_RISCV_RV64) \ CONFIG_LINUXBOOT_CROSS_COMPILE_PATH=$(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH) \ CONFIG_LINUXBOOT_BUILD_INITRAMFS=$(CONFIG_LINUXBOOT_BUILD_INITRAMFS) \ diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig index b7fc0ca..2aaa805 100644 --- a/src/arch/riscv/Kconfig +++ b/src/arch/riscv/Kconfig @@ -4,10 +4,6 @@ bool select ARCH_RISCV
-config ARCH_RISCV_RV32 - bool - select ARCH_RISCV - config ARCH_RISCV bool
diff --git a/src/arch/riscv/Makefile.mk b/src/arch/riscv/Makefile.mk index bda392a..3526359 100644 --- a/src/arch/riscv/Makefile.mk +++ b/src/arch/riscv/Makefile.mk @@ -11,15 +11,7 @@
riscv_flags = -I$(src)/arch/riscv/
-ifeq ($(CONFIG_ARCH_RISCV_RV64),y) _rv_flags += -D__riscv -D__riscv_xlen=64 -D__riscv_flen=64 -else -ifeq ($(CONFIG_ARCH_RISCV_RV32),y) -_rv_flags += -D__riscv -D__riscv_xlen=32 -D__riscv_flen=32 -else -$(error "You need to select ARCH_RISCV_RV64 or ARCH_RISCV_RV32") -endif -endif
# Needed for -print-libgcc-file-name which gets confused about all those arch # suffixes in ARCH_SUFFIX_riscv. @@ -80,10 +72,6 @@ bootblock-c-ccopts += $(riscv_flags) bootblock-S-ccopts += $(riscv_asm_flags)
-ifeq ($(CONFIG_ARCH_RISCV_RV32),y) -LDFLAGS_bootblock += -m elf32lriscv -endif #CONFIG_ARCH_RISCV_RV32 - endif #CONFIG_ARCH_BOOTBLOCK_RISCV
################################################################################ @@ -100,10 +88,6 @@ romstage-c-ccopts += $(riscv_flags) romstage-S-ccopts += $(riscv_asm_flags)
-ifeq ($(CONFIG_ARCH_RISCV_RV32),y) -LDFLAGS_romstage += -m elf32lriscv -endif #CONFIG_ARCH_RISCV_RV32 - endif #CONFIG_ARCH_ROMSTAGE_RISCV
################################################################################ @@ -128,10 +112,6 @@ ramstage-c-ccopts += $(riscv_flags) ramstage-S-ccopts += $(riscv_asm_flags)
-ifeq ($(CONFIG_ARCH_RISCV_RV32),y) -LDFLAGS_ramstage += -m elf32lriscv -endif #CONFIG_ARCH_RISCV_RV32 - endif #CONFIG_ARCH_RAMSTAGE_RISCV
ifeq ($(CONFIG_RISCV_OPENSBI),y) diff --git a/src/arch/riscv/fit_payload.c b/src/arch/riscv/fit_payload.c index bfa0c98..5ebf473 100644 --- a/src/arch/riscv/fit_payload.c +++ b/src/arch/riscv/fit_payload.c @@ -10,13 +10,7 @@ /* Implements a Berkeley Boot Loader (BBL) compatible payload loading */
#define MAX_KERNEL_SIZE (64*MiB) - -#if CONFIG(ARCH_RISCV_RV32) -#define SECTION_ALIGN (4 * MiB) -#endif -#if CONFIG(ARCH_RISCV_RV64) #define SECTION_ALIGN (2 * MiB) -#endif
static size_t get_kernel_size(const struct fit_image_node *node) { diff --git a/src/arch/riscv/include/arch/pmp.h b/src/arch/riscv/include/arch/pmp.h index 273ccfe..8d02f69 100644 --- a/src/arch/riscv/include/arch/pmp.h +++ b/src/arch/riscv/include/arch/pmp.h @@ -16,10 +16,7 @@ /* reset PMP setting */ void reset_pmp(void);
-/* - * set up PMP record - * reminder: base and size are 34-bits on RV32. - */ +/* set up PMP record */ void setup_pmp(u64 base, u64 size, u8 flags);
/* write the last PMP record, i.e. the "default" case. */ diff --git a/src/arch/riscv/pmp.c b/src/arch/riscv/pmp.c index cb605cb..d8b11a3 100644 --- a/src/arch/riscv/pmp.c +++ b/src/arch/riscv/pmp.c @@ -252,22 +252,11 @@ p->address = (base + size); }
-/* - * Generate a PMP configuration. - * reminder: base and size are 34 bit numbers on RV32. - */ +/* Generate a PMP configuration */ static int generate_pmp(struct pmpcfg *p, u64 base, u64 size, u8 flags) { - /* Convert the byte address and byte size to units of 32-bit words */ uintptr_t b = (uintptr_t) base >> PMP_SHIFT, s = (uintptr_t) size >> PMP_SHIFT; -#if __riscv_xlen == 32 - /* verify that base + size fits in 34 bits */ - if ((base + size - 1) >> 34) { - printk(BIOS_EMERG, "%s: base (%llx) + size (%llx) - 1 is more than 34 bits\n", - __func__, base, size); - return 1; - } -#endif + /* if base is -1, that means "match all" */ if (base == (u64)-1) { generate_pmp_all(p); @@ -371,19 +360,7 @@ } }
-/* - * set up PMP record - * Why are these u64 and not uintptr_t? - * because, per the spec: - * The Sv32 page-based virtual-memory scheme described in Section 4.3 - * supports 34-bit physical addresses for RV32, so the PMP scheme must - * support addresses wider than XLEN for RV32. - * Yes, in RV32, these are 34-bit numbers. - * Rather than require every future user of these to remember that, - * this ABI is 64 bits. - * generate_pmp will check for out of range values. - */ -void setup_pmp(u64 base, u64 size, u8 flags) +void setup_pmp(uintptr_t base, u64 size, u8 flags) { struct pmpcfg p; int is_range, n; diff --git a/src/mainboard/emulation/qemu-riscv/Kconfig b/src/mainboard/emulation/qemu-riscv/Kconfig index 9b5a6f0..2f6e356 100644 --- a/src/mainboard/emulation/qemu-riscv/Kconfig +++ b/src/mainboard/emulation/qemu-riscv/Kconfig @@ -11,13 +11,6 @@ select ARCH_RISCV_RV64 endif
-if BOARD_EMULATION_QEMU_RISCV_RV32 - -config BOARD_EMULATION_QEMU_RISCV - def_bool y - select ARCH_RISCV_RV32 -endif - if BOARD_EMULATION_QEMU_RISCV
config BOARD_SPECIFIC_OPTIONS @@ -52,18 +45,15 @@
config RISCV_ARCH string - default "rv64imafd" if ARCH_RISCV_RV64 - default "rv32im" if ARCH_RISCV_RV32 + default "rv64imafd"
config RISCV_ABI string - default "lp64d" if ARCH_RISCV_RV64 - default "ilp32" if ARCH_RISCV_RV32 + default "lp64d"
config RISCV_CODEMODEL string - default "medany" if ARCH_RISCV_RV64 - default "medany" if ARCH_RISCV_RV32 + default "medany"
config RISCV_WORKING_HARTID int diff --git a/src/mainboard/emulation/qemu-riscv/Kconfig.name b/src/mainboard/emulation/qemu-riscv/Kconfig.name index 3bbc6c5..bfc678a 100644 --- a/src/mainboard/emulation/qemu-riscv/Kconfig.name +++ b/src/mainboard/emulation/qemu-riscv/Kconfig.name @@ -2,6 +2,3 @@
config BOARD_EMULATION_QEMU_RISCV_RV64 bool "QEMU RISC-V rv64" - -config BOARD_EMULATION_QEMU_RISCV_RV32 - bool "QEMU RISC-V rv32" diff --git a/src/soc/ucb/riscv/Kconfig b/src/soc/ucb/riscv/Kconfig index bd0945e..ec1d610 100644 --- a/src/soc/ucb/riscv/Kconfig +++ b/src/soc/ucb/riscv/Kconfig @@ -14,8 +14,6 @@
if SOC_UCB_RISCV
-if ARCH_RISCV_RV64 - config RISCV_ARCH string default "rv64imafd" @@ -28,24 +26,6 @@ string default "medany"
-endif - -if ARCH_RISCV_RV32 - -config RISCV_ARCH - string - default "rv32im" - -config RISCV_ABI - string - default "ilp32" - -config RISCV_CODEMODEL - string - default "medany" - -endif - config RISCV_WORKING_HARTID int default 0 diff --git a/util/crossgcc/patches/gcc-14.2.0_rv32iafc.patch b/util/crossgcc/patches/gcc-14.2.0_rv32iafc.patch deleted file mode 100644 index 5b0d715..0000000 --- a/util/crossgcc/patches/gcc-14.2.0_rv32iafc.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 88bc675eab98cea388daf40396686178ca5fcdb3 Mon Sep 17 00:00:00 2001 -From: Peter Marheine pmarheine@chromium.org -Date: Mon, 15 Aug 2022 11:01:50 +1000 -Subject: [PATCH] riscv: elf-multilib: add rv32iafc to defaults - -rv32iafc-ilp32 is compatible with rv32iac-ilp32 for library -implementation, so add a reuse rule allowing the default configuration -to support rv32iafc. - --IAFC is an unusual configuration (much less common than -IMAFC), but -multilib reuse has essentially no cost: this change is useful to users -of platforms that support hardware floating-point but cannot use -hardware multiply/divide for any reason. To avoid generating a new set -of libraries this is limited to the soft-float ABI. - -Tested by verifying that `gcc -march=rv32iafc -mabi=ilp32 ---print-search-dirs` refers to the rv32iac/ilp32 library directory as -expected, rather than just the root library directory as occurs when an -unsupported target is selected (for instance, rv32id). - -Signed-off-by: Peter Marheine pmarheine@chromium.org ---- - gcc/config/riscv/t-elf-multilib | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/gcc/config/riscv/t-elf-multilib b/gcc/config/riscv/t-elf-multilib -index 19f9434616c..6e74b1811be 100644 ---- a/gcc/config/riscv/t-elf-multilib -+++ b/gcc/config/riscv/t-elf-multilib -@@ -1,11 +1,12 @@ - # This file was generated by multilib-generator with the command: --# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32-- rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- --MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d -+# ./multilib-generator rv32i-ilp32--c rv32im-ilp32--c rv32iac-ilp32--f rv32imac-ilp32-- rv32imafc-ilp32f-rv32imafdc- rv64imac-lp64-- rv64imafdc-lp64d-- -+MULTILIB_OPTIONS = march=rv32i/march=rv32ic/march=rv32im/march=rv32imc/march=rv32iac/march=rv32iafc/march=rv32imac/march=rv32imafc/march=rv32imafdc/march=rv32gc/march=rv64imac/march=rv64imafdc/march=rv64gc mabi=ilp32/mabi=ilp32f/mabi=lp64/mabi=lp64d - MULTILIB_DIRNAMES = rv32i \ - rv32ic \ - rv32im \ - rv32imc \ - rv32iac \ -+rv32iafc \ - rv32imac \ - rv32imafc \ - rv32imafdc \ -@@ -25,6 +26,7 @@ march=rv64imac/mabi=lp64 \ - march=rv64imafdc/mabi=lp64d - MULTILIB_REUSE = march.rv32i/mabi.ilp32=march.rv32ic/mabi.ilp32 \ - march.rv32im/mabi.ilp32=march.rv32imc/mabi.ilp32 \ -+march.rv32iac/mabi.ilp32=march.rv32iafc/mabi.ilp32 \ - march.rv32imafc/mabi.ilp32f=march.rv32imafdc/mabi.ilp32f \ - march.rv32imafc/mabi.ilp32f=march.rv32gc/mabi.ilp32f \ - march.rv64imafdc/mabi.lp64d=march.rv64gc/mabi.lp64d --- -2.37.1.595.g718a3a8f04-goog - diff --git a/util/qemu/Makefile.mk b/util/qemu/Makefile.mk index 7b9b636..865184f 100644 --- a/util/qemu/Makefile.mk +++ b/util/qemu/Makefile.mk @@ -32,9 +32,6 @@ QEMU-$(CONFIG_BOARD_EMULATION_QEMU_RISCV_RV64) ?= qemu-system-riscv64 -M virt -m 1G -drive \ if=pflash,file=build/coreboot.rom,format=raw
-QEMU-$(CONFIG_BOARD_EMULATION_QEMU_RISCV_RV32) ?= qemu-system-riscv32 -M virt -m 1G -drive \ - if=pflash,file=build/coreboot.rom,format=raw - QEMU-$(CONFIG_BOARD_EMULATION_QEMU_X86_I440FX) ?= qemu-system-x86_64 -M pc
QEMU-$(CONFIG_BOARD_EMULATION_QEMU_X86_Q35) ?= qemu-system-x86_64 -M q35