This is a linux-user only port, emulating a 32-bit only version of a pa-2.0 cpu. This is good enough to do well with both the gcc and glibc testsuites. Helge Deller has provided invaluable assistance testing with a more complete debian chroot.
What's missing: * Space registers. Since Linux sets them all equal (for a flat address space) and uses them like address-space identifiers, we can simply set them all to 0 and ignore them. * Architecture subsets. There's no markup for running a pure pa1.0 or pa1.1 cpu. I happily accept everything up to pa2.0 at the moment. * Wide mode. While I have pa2.0 instructions, I don't support running in 64-bit mode. Since neither the linux kernel nor glibc support a 64-bit userland, it would be a lot more work than just adding the insns. * Multimedia instructions. These are tied to wide mode, so... When squashing the patches down from my development tree, I wanted to preserve Helge's contributions, so the linux-user part is more patches than I would normally have preserved. r~ The following changes since commit d1c82f7cc34443841095f490345f86c9d8baca34: Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20170120-v2' into staging (2017-01-20 15:53:58 +0000) are available in the git repository at: git://github.com/rth7680/qemu.git tags/pull-hppa-20170122 for you to fetch changes up to 0ce588d6c60c338c0856b0dac78d19fc7e698477: target-hppa: Implement floating-point insns (2017-01-22 18:14:12 -0800) ---------------------------------------------------------------- hppa-linux target support ---------------------------------------------------------------- Helge Deller (3): linux-user: Handle TIOCSTART and TIOCSTOP linux-user: Add SIOCGPGRP, SIOCGSTAMP, SIOCGSTAMPNS linux-user: Add some hppa ioctls Richard Henderson (23): Revert "Remove remainders of HPPA backend" linux-user: Support stack-grows-up in elfload.c linux-user: Handle ERFKILL and EHWPOISON linux-user: Handle more IPV6 sockopts linux-user: Add HPPA socket.h definitions linux-user: Add HPPA syscall numbers linux-user: Add HPPA termbits.h linux-user: Add HPPA target_syscall.h linux-user: Add HPPA definitions to syscall_defs.h linux-user: Add HPPA target_structs.h linux-user: Add HPPA target_signal.h and target_cpu.h linux-user: Add HPPA signal handling linux-user: Add HPPA startup and main loop target-hppa: Add softfloat specializations target-hppa: Add framework and enable compilation target-hppa: Add nullification framework target-hppa: Implement basic arithmetic target-hppa: Implement branches target-hppa: Implement linux-user gateway page target-hppa: Implement shifts and deposits target-hppa: Implement loads and stores target-hppa: Implement system and memory-management insns target-hppa: Implement floating-point insns MAINTAINERS | 6 + configure | 7 +- default-configs/hppa-linux-user.mak | 1 + disas.c | 2 + disas/Makefile.objs | 1 + disas/hppa.c | 2832 +++++++++++++++++++++++++ fpu/softfloat-specialize.h | 20 +- linux-user/alpha/target_syscall.h | 2 + linux-user/elfload.c | 259 ++- linux-user/errno_defs.h | 3 + linux-user/hppa/sockbits.h | 97 + linux-user/hppa/syscall_nr.h | 353 ++++ linux-user/hppa/target_cpu.h | 35 + linux-user/hppa/target_signal.h | 29 + linux-user/hppa/target_structs.h | 54 + linux-user/hppa/target_syscall.h | 237 +++ linux-user/hppa/termbits.h | 219 ++ linux-user/ioctls.h | 8 + linux-user/main.c | 185 +- linux-user/mips/target_syscall.h | 5 + linux-user/mips64/target_syscall.h | 5 + linux-user/qemu.h | 3 + linux-user/signal.c | 191 +- linux-user/socket.h | 2 + linux-user/syscall.c | 41 +- linux-user/syscall_defs.h | 154 +- linux-user/syscall_types.h | 6 + target/hppa/Makefile.objs | 1 + target/hppa/cpu-qom.h | 52 + target/hppa/cpu.c | 164 ++ target/hppa/cpu.h | 144 ++ target/hppa/gdbstub.c | 111 + target/hppa/helper.c | 137 ++ target/hppa/helper.h | 66 + target/hppa/op_helper.c | 570 +++++ target/hppa/translate.c | 3946 +++++++++++++++++++++++++++++++++++ 36 files changed, 9869 insertions(+), 79 deletions(-) create mode 100644 default-configs/hppa-linux-user.mak create mode 100644 disas/hppa.c create mode 100644 linux-user/hppa/sockbits.h create mode 100644 linux-user/hppa/syscall_nr.h create mode 100644 linux-user/hppa/target_cpu.h create mode 100644 linux-user/hppa/target_signal.h create mode 100644 linux-user/hppa/target_structs.h create mode 100644 linux-user/hppa/target_syscall.h create mode 100644 linux-user/hppa/termbits.h create mode 100644 target/hppa/Makefile.objs create mode 100644 target/hppa/cpu-qom.h create mode 100644 target/hppa/cpu.c create mode 100644 target/hppa/cpu.h create mode 100644 target/hppa/gdbstub.c create mode 100644 target/hppa/helper.c create mode 100644 target/hppa/helper.h create mode 100644 target/hppa/op_helper.c create mode 100644 target/hppa/translate.c