Add support to build code big-endian if the board supports
it. Updates the makefile to pass the correct compiler and
elf flags.

Signed-off-by: Ben Dooks <ben.do...@codethink.co.uk>
---
 arch/riscv/config.mk | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/arch/riscv/config.mk b/arch/riscv/config.mk
index 9f16dda92a0..2eeeb433748 100644
--- a/arch/riscv/config.mk
+++ b/arch/riscv/config.mk
@@ -10,19 +10,29 @@
 # Rick Chen, Andes Technology Corporation <r...@andestech.com>
 #
 
-32bit-emul             := elf32lriscv
-64bit-emul             := elf64lriscv
+ifdef CONFIG_SYS_BIT_ENDIAN
+small-endian           := b
+large-endian           := big
+else
+small-endian           := b
+large-endian           := big
+PLATFORM_CPPFLAGS       += -mbig-endian
+KBUILD_LDFLAGS          += -mbig-endian
+endif
+
+32bit-emul             := elf32$(small-endian)riscv
+64bit-emul             := elf64$(small-endian)riscv
 
 ifdef CONFIG_32BIT
 KBUILD_LDFLAGS         += -m $(32bit-emul)
 EFI_LDS                        := elf_riscv32_efi.lds
-PLATFORM_ELFFLAGS      += -B riscv -O elf32-littleriscv
+PLATFORM_ELFFLAGS      += -B riscv -O elf32-$(large-endian)riscv
 endif
 
 ifdef CONFIG_64BIT
 KBUILD_LDFLAGS         += -m $(64bit-emul)
 EFI_LDS                        := elf_riscv64_efi.lds
-PLATFORM_ELFFLAGS      += -B riscv -O elf64-littleriscv
+PLATFORM_ELFFLAGS      += -B riscv -O elf64-$(large-endian)riscv
 endif
 
 PLATFORM_CPPFLAGS      += -ffixed-x3 -fpic
-- 
2.37.2.352.g3c44437643

Reply via email to