[RFC 2/7] opensbi: add build config for building big-endian

Ben Dooks ben.dooks at codethink.co.uk
Fri Dec 20 08:02:01 PST 2024


Add a build option for big-endian OpenSBI build.

Reviewed-by: Lawrence Hunter <lawrence.hunter at codethink.co.uk>
Reviewed-by: Roan Richmod <roan.richmond at codethink.co.uk>
Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
---
 Kconfig  |  5 +++++
 Makefile | 18 ++++++++++++++++--
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/Kconfig b/Kconfig
index acfc138..cc7b5bc 100644
--- a/Kconfig
+++ b/Kconfig
@@ -2,6 +2,11 @@
 
 mainmenu "OpenSBI $(OPENSBI_PLATFORM) Configuration"
 
+config OPENSBI_BE
+	bool "Build OpenSBI big-endian"
+	help
+	  Say Y here if you like fun challenges
+
 config OPENSBI_SRC_DIR
 	string
 	option env="OPENSBI_SRC_DIR"
diff --git a/Makefile b/Makefile
index d9cee49..3b6d981 100644
--- a/Makefile
+++ b/Makefile
@@ -357,6 +357,9 @@ GENFLAGS	+=	$(firmware-genflags-y)
 
 CFLAGS		=	-g -Wall -Werror -ffreestanding -nostdlib -fno-stack-protector -fno-strict-aliasing -ffunction-sections -fdata-sections
 CFLAGS		+=	-fno-omit-frame-pointer -fno-optimize-sibling-calls
+ifeq ($(CONFIG_OPENSBI_BE),y)
+CFLAGS		+=	-mbig-endian
+endif
 # Optionally supported flags
 ifeq ($(CC_SUPPORT_SAVE_RESTORE),y)
 CFLAGS		+=	-mno-save-restore
@@ -397,6 +400,9 @@ endif
 ASFLAGS		+=	$(GENFLAGS)
 ASFLAGS		+=	$(platform-asflags-y)
 ASFLAGS		+=	$(firmware-asflags-y)
+ifeq ($(CONFIG_OPENSBI_BE),y)
+ASFLAGS		+=	-mbig-endian
+endif
 
 ARFLAGS		=	rcs
 
@@ -410,13 +416,21 @@ ELFFLAGS	+=	-Wl,--no-dynamic-linker -Wl,-pie
 ELFFLAGS	+=	$(platform-ldflags-y)
 ELFFLAGS	+=	$(firmware-ldflags-y)
 
+ifeq ($(CONFIG_OPENSBI_BE),y)
+FULL_ENDIAN=big
+SMALL_ENDIAN=b
+else
+FULL_ENDIAN=little
+SMALL_ENDIAN=l
+endif
+
 MERGEFLAGS	+=	-r
 ifeq ($(LD_IS_LLD),y)
 MERGEFLAGS	+=	-b elf
 else
-MERGEFLAGS	+=	-b elf$(PLATFORM_RISCV_XLEN)-littleriscv
+MERGEFLAGS	+=	-b elf$(PLATFORM_RISCV_XLEN)-$(FULL_ENDIAN)riscv
 endif
-MERGEFLAGS	+=	-m elf$(PLATFORM_RISCV_XLEN)lriscv
+MERGEFLAGS	+=	-m elf$(PLATFORM_RISCV_XLEN)$(SMALL_ENDIAN)riscv
 
 DTSCPPFLAGS	=	$(CPPFLAGS) -nostdinc -nostdlib -fno-builtin -D__DTS__ -x assembler-with-cpp
 
-- 
2.37.2.352.g3c44437643




More information about the opensbi mailing list