[[!meta title="NetBSD/hpcmips Binary Compatibility"]]
[[!toc startlevel=1 levels=2]]
* * * * *
## About this page
This page contains information about NetBSD/hpcmips binary
compatibility. At the package level, NetBSD/pmax, NetBSD/hpcmips,
NetBSD/cobalt, NetBSD/playstation2, and NetBSD/arc are all compatible.
NetBSD/hpcmips userland binaries are compiled with "-mhard-float" flag.
* * * * *
# Compatibility with other NetBSD ports
## NetBSD/cobalt binary compatibility
[[NetBSD/cobalt|cobalt]] is almost compatible with arc and pmax and
hpcmips and playstation2.
## NetBSD/playstation2 binary compatibility
[[NetBSD/playstation2|playstation2]] is almost compatible with arc
and pmax and hpcmips.
## NetBSD/arc binary compatibility
[[NetBSD/arc|arc]] is almost compatible with pmax and hpcmips; the
only exception is disklabel (MAXPARTITIONS==16). NetBSD/hpcmips's
disklabel command is also incompatible with pmax, because it handles
fdisk (MBR) partition table.
## NetBSD/pmax binary compatibility
[[NetBSD/pmax|pmax]] userland binaries and packages are also little
endian, but use hardware floating point (which can be emulated) and
incompatible function call rules (which prevents pmax and hpcmips
binaries from using the same shared libraries).
Hardfloat 'mipsel' userland:
: Allows sharing of userland and packages with NetBSD/pmax. This saves
maintenance and distribution space, but at the cost of slower
floating point performance.
Softfloat 'mipselsf' userland and packages:
: This gives the best performance, but cannot run dynamic NetBSD/pmax
binaries.
Softfloat 'mipselsf' userland, extra 'mipsel' libraries:
: Two copies of each shared library are produced, one softfloat, one
hardfloat, and ld.so modified to use correct type. This would allow
both types of binaries to run, but would be a maintenance nightmare.
* * * * *
# Compatibility with ULTRIX
## ULTRIX binary compatibility
NetBSD/hpcmips can exec ULTRIX static-linked binary image. To do so,
follow these steps:
1. Add kernel configuration option and reconfig your kernel.
[[!template id=programlisting text="""
options COMPAT_ULTRIX
options EXEC_ECOFF
"""]]
2. Copy `/usr/share/examples/emul/ultrix/etc/svc.conf` to
`/etc/svc.conf` or
`/emul/ultrix/etc/svc.conf`.
3. Add hostname to `/etc/hosts`.
NetBSD/hpcmips can execute ULTRIX static-linked binary, such as
[distributed.net clients](http://distributed.net/download/clients.html).
* * * * *
# Compatibility with Linux MIPS ports
## Compatibility with Linux
NetBSD/hpcmips has a "COMPAT\_LINUX" kernel option, but it is not tested
at all. Any more testers and developers in this are would be welcome.