Skip to content
adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
C C++ Python Shell Haxe Assembly Other
Branch: master
Clone or download
Pull request Compare This branch is 2 commits ahead of queueRAM:master.
mountainflaw Merge pull request #1 from spycrab/fix_build_new_kernel
Fix compilation error on newer linux versions
Latest commit 32ab296 Aug 28, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
accel Merge remote-tracking branch 'remotes/armbru/tags/pull-misc-2018-02-0… Feb 9, 2018
audio audio: rename CONFIG_* to CONFIG_AUDIO_* Mar 5, 2018
backends qapi: Move qapi-schema.json to qapi/, rename generated files Mar 2, 2018
block block: Fix qemu crash when using scsi-block Mar 8, 2018
bsd-user misc: remove headers implicitly included Dec 18, 2017
capstone @ 22ead3e disas: Add capstone as submodule Oct 26, 2017
chardev Merge remote-tracking branch 'remotes/berrange/tags/qio-next-pull-req… Mar 8, 2018
contrib Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into sta… Feb 13, 2018
crypto
default-configs irix and solaris userland emulation (linux-user targets irix,irixn32,… Mar 10, 2018
disas RISC-V Disassembler Mar 6, 2018
docs Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into s… Mar 6, 2018
dtc @ e543880 Update dtc to fix compilation problem on Mac OS 10.6 Jan 10, 2018
fpu softfloat: fix crash on int conversion of SNaN Mar 9, 2018
fsdev use g_path_get_basename instead of basename Mar 6, 2018
gdb-xml s390x/gdb: add gs registers Jul 14, 2017
hw Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-reques… Mar 9, 2018
include irix and solaris userland emulation (linux-user targets irix,irixn32,… Mar 10, 2018
io qio: non-default context for TLS handshake Mar 6, 2018
libdecnumber build: remove CONFIG_LIBDECNUMBER Oct 16, 2017
linux-headers linux-headers: update Jan 22, 2018
linux-user Fix compilation error on newer linux versions Aug 28, 2019
migration qio: non-default context for TLS handshake Mar 6, 2018
nbd qio: non-default context for TLS handshake Mar 6, 2018
net Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request'… Mar 5, 2018
pc-bios pc-bios/s390-ccw: Move string arrays from bootmap header to .c file Mar 8, 2018
po po: add missing translations in de, fr, it, zh Dec 14, 2016
qapi RISC-V Build Infrastructure Mar 6, 2018
qga use g_path_get_basename instead of basename Mar 6, 2018
qobject Include qapi/qmp/qstring.h exactly where needed Feb 9, 2018
qom qmp: Add qom-list-properties to list QOM object properties Mar 6, 2018
replay Include less of the generated modular QAPI headers Mar 2, 2018
roms
scripts RISC-V Build Infrastructure Mar 6, 2018
scsi
slirp slirp: add in6_dhcp_multicast() Jan 14, 2018
stubs qapi: Empty out qapi-schema.json Mar 2, 2018
target irix and solaris userland emulation (linux-user targets irix,irixn32,… Mar 10, 2018
tcg fixes for building on 32 bit host systems Jul 23, 2019
tests Merge remote-tracking branch 'remotes/berrange/tags/qio-next-pull-req… Mar 8, 2018
trace Include less of the generated modular QAPI headers Mar 2, 2018
ui qio: non-default context for TLS handshake Mar 6, 2018
util irix and solaris userland emulation (linux-user targets irix,irixn32,… Mar 10, 2018
.dir-locals.el Add .dir-locals.el file to configure emacs coding style Oct 8, 2015
.editorconfig add editorconfig Jul 20, 2017
.exrc qemu: add .exrc Sep 7, 2012
.gdbinit .gdbinit: load QEMU sub-commands when gdb starts Jun 7, 2017
.gitignore qapi: Don't create useless directory qapi-generated Mar 2, 2018
.gitmodules roms: Added git submodule for u-boot-sam460 (firmware for sam460ex) Mar 6, 2018
.gitpublish Add a git-publish configuration file Mar 5, 2018
.mailmap mailmap: set preferred spelling for Daniel Berrangé Feb 10, 2018
.shippable.yml .shippable.yml: disable powerpc-cross image Mar 8, 2018
.travis.yml travis: use libgcc-4.8-dev (libgcc-6-dev is not available on Ubuntu 1… Feb 13, 2018
CODING_STYLE coding_style: add point about 0x in trace-events Aug 1, 2017
COPYING COPYING: update from FSF Oct 12, 2008
COPYING.LIB Update FSF address in GPL/LGPL boilerplate Jan 4, 2009
COPYING.PYTHON scripts: add argparse module for Python 2.6 compatibility Aug 30, 2017
Changelog Use HTTPS for qemu.org and other domains Nov 21, 2017
HACKING HACKING: document #include order Jan 3, 2017
LICENSE vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/h… Dec 19, 2014
MAINTAINERS RISC-V Maintainers Mar 6, 2018
Makefile ppc: Add aCube Sam460ex board Mar 6, 2018
Makefile.objs Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2018… Mar 8, 2018
Makefile.target tcg: Add generic vector expanders Feb 8, 2018
README README: Fix typo 'git-publish' Mar 8, 2018
README.md Added some notes on usage to readme Jul 23, 2019
VERSION Open 2.12 development tree Dec 13, 2017
arch_init.c RISC-V Build Infrastructure Mar 6, 2018
balloon.c qapi: Empty out qapi-schema.json Mar 2, 2018
block.c Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into s… Mar 6, 2018
blockdev-nbd.c Include less of the generated modular QAPI headers Mar 2, 2018
blockdev.c Include less of the generated modular QAPI headers Mar 2, 2018
blockjob.c Include less of the generated modular QAPI headers Mar 2, 2018
bootdevice.c Makefile: Move bootdevice.o to common-obj-y Jul 4, 2017
bt-host.c all: Clean up includes Feb 4, 2016
bt-vhci.c all: Clean up includes Feb 4, 2016
configure fixes for building on 32 bit host systems Jul 23, 2019
cpus-common.c *_run_on_cpu: introduce run_on_cpu_data type Oct 31, 2016
cpus.c Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-reques… Mar 9, 2018
device-hotplug.c Move include qemu/option.h from qemu-common.h to actual users Feb 9, 2018
device_tree.c Move include qemu/option.h from qemu-common.h to actual users Feb 9, 2018
disas.c RISC-V Disassembler Mar 6, 2018
dma-helpers.c block: explicitly acquire aiocontext in bottom halves that need it Feb 21, 2017
dump.c qapi: Empty out qapi-schema.json Mar 2, 2018
exec.c memory: fix flatview_access_valid RCU read lock/unlock imbalance Mar 9, 2018
gdbstub.c gdbstub: add tracing Dec 18, 2017
hmp-commands-info.hx target/m68k: add HMP command "info tlb" Jan 25, 2018
hmp-commands.hx net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP c… Mar 5, 2018
hmp.c qapi: Move qapi-schema.json to qapi/, rename generated files Mar 2, 2018
hmp.h net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP c… Mar 5, 2018
ioport.c trace: switch to modular code generation for sub-directories Jan 31, 2017
iothread.c vl: introduce vm_shutdown() Mar 8, 2018
memory.c memory: inline some performance-sensitive accessors Mar 6, 2018
memory_ldst.inc.c exec: introduce memory_ldst.inc.c Dec 22, 2016
memory_mapping.c Replace all occurances of __FUNCTION__ with __func__ Jan 22, 2018
module-common.c
monitor.c Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request'… Mar 5, 2018
numa.c numa: we don't implement NUMA for s390x Mar 8, 2018
os-posix.c os-posix: Drop misleading comment Oct 16, 2017
os-win32.c shutdown: Add source information to SHUTDOWN and RESET May 23, 2017
qdev-monitor.c qmp: Merge ObjectPropertyInfo and DevicePropertyInfo Mar 6, 2018
qdict-test-data.txt Introduce QDict test data file Sep 4, 2009
qemu-bridge-helper.c all: Remove unnecessary glib.h includes Jun 7, 2016
qemu-doc.texi balloon: Fix documentation of the --balloon parameter and deprecate it Mar 6, 2018
qemu-ga.texi
qemu-img-cmds.hx qemu-img: add --shrink flag for resize Sep 26, 2017
qemu-img.c Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into s… Mar 6, 2018
qemu-img.texi qemu-img: Document --force-share / -U Feb 13, 2018
qemu-io-cmds.c Move include qemu/option.h from qemu-common.h to actual users Feb 9, 2018
qemu-io.c use g_path_get_basename instead of basename Mar 6, 2018
qemu-keymap.c Drop superfluous includes of qapi-types.h and test-qapi-types.h Feb 9, 2018
qemu-nbd.c Move include qemu/option.h from qemu-common.h to actual users Feb 9, 2018
qemu-nbd.texi
qemu-option-trace.texi docs: update manpage for stderr->log rename Feb 13, 2017
qemu-options-wrapper.h qemu-options: Remove stray colons from output of --help Dec 20, 2017
qemu-options.h Clean up ill-advised or unusual header guards Jul 12, 2016
qemu-options.hx balloon: Fix documentation of the --balloon parameter and deprecate it Mar 6, 2018
qemu-seccomp.c seccomp: add resourcecontrol argument to command line Sep 15, 2017
qemu-tech.texi qemu-doc: merge qemu-tech and qemu-doc Oct 7, 2016
qemu.nsi Use HTTPS for qemu.org and other domains Nov 21, 2017
qemu.sasl Default to GSSAPI (Kerberos) instead of DIGEST-MD5 for SASL May 9, 2017
qmp.c qmp: Add qom-list-properties to list QOM object properties Mar 6, 2018
qtest.c qtest: Don't perform side effects inside assertion Sep 15, 2017
replication.c replication: Introduce new APIs to do replication operation Sep 13, 2016
replication.h Include less of the generated modular QAPI headers Mar 2, 2018
rules.mak Revert "build-sys: silence make by default or V=0" Feb 13, 2018
thunk.c thunk: assert nb_fields is valid Jul 31, 2017
tpm.c qapi: Move qapi-schema.json to qapi/, rename generated files Mar 2, 2018
trace-events trace: avoid SystemTap "char const" warnings Feb 19, 2018
version.rc Use HTTPS for qemu.org and other domains Nov 21, 2017
vl.c vl: introduce vm_shutdown() Mar 8, 2018

README.md

This QEMU patch introduces irix/solaris userland emulation. It currently runs only under linux (though BSD support would probably be feasable).

compiling

Configure QEMU for irix/solaris userland emulation and compile (see the original QEMU README for further instructions):

configure --target-list=irix-linux-user,irixn32-linux-user,irix64-linux-user,solaris-linux-user
make && make install

using

I recommend using binfmt. I have prepared some scripts for this which you can obtain from my qemu-irix-helpers repository at github. Adapt the wrapper scripts to your setup and install them somewhere in your executable path. Activate them with the binfmt install scripts.

Now you should be able to directly execute irix/solaris binaries from the shell. As a rather simple test, try:

<target rootfs>/bin/ls

notes

IRIX threading uses a local TLS storage area named PRDA which is privately mapped into each thread at address 0x20000. qemu-irix will emulate this behaviour if QEMU_IRIXPRDA is set in the environment. You most probably need to do so for any IRIX software using multithreading. Be aware that this will noticably harm the performance of the emulation since every memory access is checked for PRDA access (AFAIK it isn't possible to emulate this directly on linux or BSD).

For conveniance I have also extended the handling of QEMU_LD_PREFIX to allow the specification of multiple paths separated by ':'. That way you can keep the target os root separate from additional software. Moreover, for a noticable speed gain at qemu startup, QEMU_LD_PREFIX is not pre-scanned anymore. Instead, it is now caching any directories accessed by the emulated program.

send bug reports, fixes etc to Kai-Uwe Bloem (derkub@gmail.com)

You can’t perform that action at this time.