The Utah PA-RISC Code Snapshot


Contents

What's New
Important: Last Minute Changes
What it is (and is not)
Supported Hardware
Known Bugs
FTP Information
About the Pieces
Future Plans
Acknowledgments

More Details

Installation
FAQ
PA Code Tour
List of Installed Binaries

What's New

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 Linux and OpenBSD ports (NetBSD may also be in the works). The Puffin Group Linux port effort in particular has the support of HP and has 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. See the 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.

Last Minute Changes

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 expecting. 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.

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).

What it is (and is not)

Integrated support for the PA-RISC 1.1 (aka HP 700) platform, in these components: freely distributable 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. Hence, 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. Thanks HP!

Supported Hardware

CPUs
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
PA7150: 735/125
Displays
GRX, CRX
Peripherals
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.

Known Bugs

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:

FTP Information

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.
Kernel source (3 MB, compressed tar file)
Sources for the Mach kernel, Lites server, and standalone bootstrap.
User source (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.
User binaries (23 MB, compressed tar file)
A scaled down 4.4-lite /usr filesystem.
Disk image (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.

About the Pieces

The Bootloader

The bootloader is an implementation of the standard (if there is such a thing) BSD ``boot program'' traditionally found in the /sys/*stand directories. The PA version was originally written by Mt. Xinu and heavily modified at Utah since. The original AT&T encumbered routines have been replaced by those from the Mach distribution. 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, /vmunix.

It is completely incompatible with the HP-UX bootstrap, and totally unrelated to the x86 bootstrap.

See the bootstrap section of the code tour for more details.

The Kernel

The Mach kernel source is derived from CMU's MK83 release and is what we loosely refer to as Mach 4. It contains some initial work we have done as part of the ARPA-funded Flux work. In particular it contains a prototype implementation of migrating threads and a basic framework for signature-based RPC, a fundamental component of the presentation/interface work. 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 into Mach4. 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 Server

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, or our 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.