The Utah PA-RISC Code Snapshot
- What's New
- Important: Last Minute Changes
- What it is (and is not)
- Supported Hardware
- Known Bugs
- FTP Information
- About the Pieces
- Future Plans
- PA Code Tour
- List of Installed Binaries
This current snapshot won't work on a 712.
There appear to be a host of annoying problems.
The bootloader doesn't work on an external SCSI-1 drive,
only an internal disk.
Either the boot ROM doesn't load it or loads it someplace we are not
In any case, the bootloader never gets control.
This may be hard to find/fix and is not high priority.
If you boot from an internal disk, the keyboard doesn't work.
This is no doubt a simple configuration problem in our kernel and
will be fixed soon.
Finally, even if you use the serial port as console and boot single user,
the machine hangs doing fsck.
This is something else we broke late in the game as it used to work fine.
This will be fixed soon.
- December 9, 2002:
Fixed the copyright notice in kernel/parisc/locore.s to add the standard
"Permission to use" clauses" at the request of the OpenBSD PA-RISC folks.
I just remade the tarballs:
the only difference from snapshot2 is the locore file.
- July 16, 1999:
Even though we no longer do PA-RISC work, and the Open Group
is dead and gone, free software is still alive and well on the PA-RISC!
There is currently active development on both
ports (NetBSD may also be in the works).
The Puffin Group Linux port effort in particular has the support of HP
a list of documentation
that has been made available by HP.
Good Luck to them all!
- January 12, 1998:
About six months ago, OSF er..."The Open Group" announced a
MkLinux snapshot for the PA-RISC.
They took our PA Mach kernel sources, fixed a lot of things,
added support for more hardware and slapped a Linux server on top.
You should definitely pick this up if you are considering doing any
OS work on the hp700 series machines.
- January 9, 1996:
I finally put together a quick tar file containing
newer kernel sources.
snapshot II release page
for more info.
- September 19, 1995:
Much of the Lites stuff mentioned here is outdated.
Reference our more recent
Lites release instead, which contains PA-RISC support.
The snapshot was tested on only a small subset of the supported machines.
We successfully booted to multi-user on a snake cpu (730), a 7100 (715/75),
and a 7150 (735/125).
Integrated support for the PA-RISC 1.1 (aka HP 700) platform,
in these components:
source, binaries, and boot image for a complete Mach kernel
that includes some of our recent research (though not exploited),
the ``Lites'' BSD-based single-server,
include directories and libraries,
and a complete GNU tool chain for the ELF object format.
In addition, there are assorted other PA-related device drivers,
kernel components and utilities which could be useful.
A fairly complete 4.4-lite user environment is also provided.
The entire system was self-built on mach4/Lites.
We refer to this as a snapshot and not a release
as the provided code is not robust,
does not provide a complete application environment,
contains minimal bootstrap capability,
and has practically no documentation.
we recommend that you do not run this,
unless you are a hard-core O.S. hacker who has an interest in,
and knowledge of, the PA architecture.
Later true releases, with help from you O.S. hackers,
will allow the more faint-at-heart to run an
alternative O.S. on their HP workstations.
This snapshot was facilitated by HP when they recently ``freed-up'' a
number of essential files.
original: 705, 710, 720, 730, 750
PA7100: 715/33, 715/50, 715/75, 725/50, 725/75, 735/99, 755/99
PA7100LC: 712/60, 712/80, 715/64, 715/80, 715/100
- GRX, CRX
- internal SE and FW SCSI (disks and tapes)
- serial ports, HIL, PS/2 keyboard and mouse, builtin 802.3 LAN
Notably unsupported are:
builtin FDDI, EISA, parallel port, audio, teleshare port, and PS/2 floppy.
These are bugs which we have encountered while preparing this release.
A number of these may be related to our peculiar environment (a large
number of machines running non-vendor supplied software) and you may or
may not see them.
In no particular order:
These files are all in the anonymous ftp ``flux'' directory on
jaguar.cs.utah.edu. If you are using Mosaic to transfer them, you will
want to give the "Load to Local Disk" option before clicking on them, or
they will expand mightily. The
installation instructions describe how to use these files.
The PA boot loader is not well integrated with Mach right now.
In particular, you can only pass flags to the kernel,
you cannot pass flags on to the server.
The kernel will run out of activations under a heavy load.
Might be a leak.
This kernel is optimized for migrating RPC
and the old, hand-crafted fast IPC paths in
mach_msg are gone.
Unfortunately, the stable standard configuration does yet use
migrating RPC so everything uses the slow, general IPC path.
new RPC mechanism can be configured in Lites 1.1.u2.
We have encountered a variety of problems with 4.4's COMPAT_43 code
when running our old BSD binaries.
These include the console not working after getty gets an interrupted system
raw tty handling not working correctly in emacs,
and X11 clients getting X protocol errors.
None of these affect the native 4.4 ELF binaries.
There is at least one bug in the native build environment which may
require that you hand build pieces:
there is a parsing problem in the assembler having to do with use of ``!''
as a line separator in hand-written assembly.
You must use:
"AS=tr \! '\012' | as"
to build these.
The makefile for libc takes care of this, but you may encounter it elsewhere.
You may also see ``ignoring subspace decl...'' warnings from the assembler,
The ELF linker is known to core dump when linking code with undefined symbols.
Also, there is no ELF libc
(3 MB, compressed tar file)
Sources for the Mach kernel, Lites server, and standalone bootstrap.
(36 MB, compressed tar file)
Sources for a scaled-down 4.4-lite environment (i.e. everything else).
Should include source for everything that is in the disk image and /usr
binary tar file.
(23 MB, compressed tar file)
A scaled down 4.4-lite /usr filesystem.
(8 MB, compressed dd file)
A raw disk image of a bootblock, root and swap partitions.
WEB docs in postscript
(~40K, compressed tar file)
These WEB PA-related documents in postscript form.
WEB docs in ASCII
(~20K, compressed tar file)
These WEB PA-related documents in plain ASCII form.
The bootloader is an implementation of the standard (if there is such a thing)
BSD ``boot program'' traditionally found in the
The PA version was originally written by Mt. Xinu and heavily modified at
The original AT&T encumbered routines have been replaced by those from the
It is a single-level bootstrap, i.e. it is loaded by the ROM and is directly
responsible for loading the kernel, and uses PDC (aka ``the boot ROM'')
routines for all console, disk and tape operations.
It can load either SOM or ELF format kernels.
By default it attempts to load
/mach and, failing that,
It is completely incompatible with the HP-UX bootstrap,
and totally unrelated to the x86 bootstrap.
the bootstrap section of the code tour
for more details.
The Mach kernel source is derived from CMU's MK83 release and is
what we loosely refer to as
It contains some initial work we have done as part of the ARPA-funded
In particular it contains a prototype implementation of
and a basic framework for signature-based RPC,
a fundamental component of the
Currently, none of these features is used either by the
Lites server or within the kernel itself.
The PA specific portion includes all the necessary interrupt, exception,
and system call handling code (``locore''), a pmap module,
and device drivers for the VSC and GSC bus based workstations.
The only kernel or server component which is provided only as a binary library
and not in source form
is the so-called ``floating point emulation'' code which handles
operations and exceptional conditions not done in hardware.
It is similar in function to Motorola's FPSP package for the 68040.
The source is HP-proprietary, and the distributed ``spmath'' library
cannot be used for commercial purposes.
The libmach and libcthreads libraries, which are conventionally
considered part of the kernel, are also included with the necessary
changes for PA support.
We also include some additional code which has not yet been integrated
The code is either part of our earlier HP 800 series (PA-RISC 1.0) Mach
or HP 700 OSF/1 ports or it is part of our 4.3/4.4 hybrid BSD system.
The former includes bus configuration and rudimentary device drivers
for the CIO bus based workstations as well as a remote kernel/task
debugging facility developed by Convex.
The latter includes some basic EISA support and alternative LAN drivers.
Finally, the kernel source tree has been reorganized in a
new build environment which uses the FSF's configure and make utilities.
The operating system ``personality'' is provided by the Lites server/emulator.
Lites is a user-mode, single-task implementation of BSD Unix
which runs on top of a Mach micro-kernel.
It was developed by Johannes Helander
at Helsinki University of Technology (HUT) in Finland.
Lites is based on the 4.4-lite release from Berkeley,
single-server code from CMU,
machine dependent ports from various people,
and a lot of code and work from Johannes.
It is freely available and runs on the i386, pc532, Mips and PA-RISC.
The PA port was done at Utah.
For more details, see the
Lites home page,
Lites release page.
On the PA, Lites can exist on either a Utah BSD binary base (SOM format files)
or a true 4.4bsd binary base (ELF format).
This means that it can not only execute binaries in those formats,
but it also understands their filesystem formats and layouts.
The ability to execute HP-UX binaries is not implemented in this snapshot,
but will be in the future.
Compiler and Other GNU Tools
We include a GNU compiler toolchain that generates PA ELF binaries,
not the usual HP SOM object format. The ELF linker is currently very slow;
the tradeoffs are explained in the FAQ.
GNU Tools provided include:
where a ``.u?'' suffix reflects Utah enhanced/fixed versions.
- binutils: version 2.5.2.u2
(includes ar, gas, ld, nm, ranlib, size, strings, and strip)
- gcc: version 2.6.3.u4
- make: version 3.69