Hello,
below patches add support for big-endian aarch64 to linux-user. Almost
everything is already in place. The patches just set up the CPU flags as
required for big-endianness, add a distinction in uname and make sure the
instructions for the signal trampoline end up in memory little-endian.
Finally, configure is extended to allow building of a
aarch64_be-linux-user target and scripts/qemu-binfmt-conf.sh to include
the binfmt magic for aarch64_be ELF files.
While at it, scripts/qemu-binfmt-conf.sh is changed again to separate
arm/aarch64 targets of differing endianness into separate families so
that the binfmt handler for the respective other endianness is indeed
registered. Also, while not strictly relevant to aarch64 support, armeb
is actually added to the list of targets, binfmt handlers should
registered for.
With this I am able to run individual aarch64_be binaries as well as
chroot into a full-blown aarch64_be userland using binfmt_misc, running
and compiling things (Gentoo crossdev/native).
v3:
- drop changes to aarch64 host support from configure
- add binfmt arm CPU family separation
- add armeb to binfmt handler targets
v2:
- add binfmt magic to qemu-binfmt-conf.sh
- fix style problems (tab indenting)
Thanks,
Michael
Michael Weiser (7):
linux-user: Add support for big-endian aarch64
linux-user: Add separate aarch64_be uname
linux-user: Fix endianess of aarch64 signal trampoline
configure: Add aarch64_be-linux-user target
linux-user: Add aarch64_be magic numbers to qemu-binfmt-conf.sh
linux-user: Separate binfmt arm CPU families
linux-user: Activate armeb handler registration
configure | 5 +++--
default-configs/aarch64_be-linux-user.mak | 1 +
linux-user/aarch64/target_syscall.h | 4 ++++
linux-user/main.c | 6 ++++++
linux-user/signal.c | 10 +++++++---
scripts/qemu-binfmt-conf.sh | 15 +++++++++++----
6 files changed, 32 insertions(+), 9 deletions(-)
create mode 100644 default-configs/aarch64_be-linux-user.mak
--
2.15.1