108 lines
3.4 KiB
Diff
108 lines
3.4 KiB
Diff
From 7ece08d7902d5a8c007deeb0b75cb533a41dd882 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Kolesa <daniel@octaforge.org>
|
|
Date: Sun, 7 Mar 2021 01:47:42 +0100
|
|
Subject: [PATCH] support ppcle architecture
|
|
|
|
---
|
|
configure | 14 ++++++++++++--
|
|
configs/targets/ppcle-linux-user.mak | 4 ++++
|
|
linux-user/ppc/target_syscall.h | 4 ++++
|
|
scripts/qemu-binfmt-conf.sh | 6 +++++-
|
|
tests/tcg/configure.sh | 2 ++
|
|
5 files changed, 27 insertions(+), 3 deletions(-)
|
|
create mode 100644 configs/targets/ppcle-linux-user.mak
|
|
|
|
diff --git a/configure b/configure
|
|
index 18c26e0..03d3e18 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -653,7 +653,11 @@ elif check_define _ARCH_PPC ; then
|
|
cpu="ppc64"
|
|
fi
|
|
else
|
|
- cpu="ppc"
|
|
+ if check_define _LITTLE_ENDIAN ; then
|
|
+ cpu="ppcle"
|
|
+ else
|
|
+ cpu="ppc"
|
|
+ fi
|
|
fi
|
|
elif check_define __mips__ ; then
|
|
cpu="mips"
|
|
@@ -638,6 +642,9 @@
|
|
|
|
ppc)
|
|
CPU_CFLAGS="-m32" ;;
|
|
+ ppcle)
|
|
+ cpu="ppc"
|
|
+ CPU_CFLAGS="-m32 -mlittle-endian" ;;
|
|
ppc64)
|
|
CPU_CFLAGS="-m64 -mbig-endian" ;;
|
|
ppc64le)
|
|
diff --git a/configs/targets/ppcle-linux-user.mak b/configs/targets/ppcle-linux-user.mak
|
|
new file mode 100644
|
|
index 0000000..2259243
|
|
--- /dev/null
|
|
+++ b/configs/targets/ppcle-linux-user.mak
|
|
@@ -0,0 +1,4 @@
|
|
+TARGET_ARCH=ppc
|
|
+TARGET_SYSTBL_ABI=common,nospu,32
|
|
+TARGET_SYSTBL=syscall.tbl
|
|
+TARGET_XML_FILES= gdb-xml/power-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml
|
|
diff --git a/linux-user/ppc/target_syscall.h b/linux-user/ppc/target_syscall.h
|
|
index b9c4b81..cf26497 100644
|
|
--- a/linux-user/ppc/target_syscall.h
|
|
+++ b/linux-user/ppc/target_syscall.h
|
|
@@ -65,7 +65,11 @@ struct target_revectored_struct {
|
|
#define UNAME_MACHINE "ppc64le"
|
|
#endif
|
|
#else
|
|
+#ifdef TARGET_WORDS_BIGENDIAN
|
|
#define UNAME_MACHINE "ppc"
|
|
+#else
|
|
+#define UNAME_MACHINE "ppcle"
|
|
+#endif
|
|
#endif
|
|
#define UNAME_MINIMUM_RELEASE "2.6.32"
|
|
|
|
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
|
|
index 9f1580a..393943f 100755
|
|
--- a/scripts/qemu-binfmt-conf.sh
|
|
+++ b/scripts/qemu-binfmt-conf.sh
|
|
@@ -46,6 +46,10 @@ ppc_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x
|
|
ppc_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
|
ppc_family=ppc
|
|
|
|
+ppcle_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14\x00'
|
|
+ppcle_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00'
|
|
+ppc_family=ppcle
|
|
+
|
|
ppc64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15'
|
|
ppc64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
|
ppc64_family=ppc
|
|
@@ -148,7 +152,7 @@ qemu_get_family() {
|
|
"Power Macintosh"|ppc64|powerpc|ppc)
|
|
echo "ppc"
|
|
;;
|
|
- ppc64el|ppc64le)
|
|
+ ppc64el|ppc64le|ppcel|ppcle)
|
|
echo "ppcle"
|
|
;;
|
|
arm|armel|armhf|arm64|armv[4-9]*l|aarch64)
|
|
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
|
|
index e1b70e2..e07f5fe 100755
|
|
--- a/tests/tcg/configure.sh
|
|
+++ b/tests/tcg/configure.sh
|
|
@@ -59,6 +59,8 @@ fi
|
|
: $(cross_cc_mips="mips-linux-gnu-gcc")
|
|
: ${cross_cc_ppc="powerpc-linux-gnu-gcc"}
|
|
: ${cross_cc_cflags_ppc="-m32"}
|
|
+: ${cross_cc_ppcle="powerpcle-linux-gnu-gcc"}
|
|
+: ${cross_cc_cflags_ppcle="-m32"}
|
|
: ${cross_cc_ppc64="powerpc64-linux-gnu-gcc"}
|
|
: ${cross_cc_ppc64le="powerpc64le-linux-gnu-gcc"}
|
|
: $(cross_cc_riscv64="riscv64-linux-gnu-gcc")
|
|
--
|
|
2.30.1
|
|
|