The FreeBSD/PowerPC GENERIC kernel will boot on PearPC 0.2
with the attached diffs. Doesn't quite get to single-user,
so I'm still investigating.

Here's what's in the diffs -

io/ide/ide.cc

 - the FreeBSD ATA code assumes that PCI ATA devices support
   4-byte accesses to the data port. Not an unreasonable assumption.
   When a 4-byte read was detected, I split it into 2 2-byte
   reads. Haven't done writes yet (only CD booting) but it should
   be the same


io/pci/pci.cc

 - FreeBSD PCI bridge probing assumes that the bus limit, io and
   memory ranges have been correctly set up in the appropriate
   config registers.

 - reads to non-existent slot's config space should return 0xffffffff

 - the MPC106 code writes to the config register with the 'enable'
   bit clear to serialise writes. There doesn't need to be a warning
   about this.


io/pic/pic.cc

 - The pic code reads from the ack registers to serialise writes.
   These can be ignores. Works fine on real h/w.


io/prom/promboot.cc

 - the ELF loader should respect the p_paddr fied in the section header.
   Maybe there could be a config option to select between this behaviour
   and the fixed ELF_LOAD_ADDRESS


io/prom/promdt.cc

 - key-pressed events shouldn't be returned from the KBD::read routine.
   This results in a null character being returned when for instance
   'shift-;' is pressed to get a ':' character. OpenFirmware doesn't
   do this.

 - Free/Net/OpenBSD all keep OpenFirmware resident, so the 'translations'
   property has to be supported. A new node type has been added for this.
   It only has to return a single mapping, so the PROM entry point is
   returned. This is the same as what gdb/psim does.

 - In setting up the OpenFirmware device tree:

   - the translations property is added to mmu
   - the 'bus-range' property of the bridge is required.
   - the MacIO alias should be "mac-io" and not "macio". Check out
     older Mac device trees.
   - the "/chosen" node has an "interrupt-controller" phandle for
     Heathrow-style PICs


io/prom/prommem.cc

 - ignore repeat page allocations. This is sloppy code in the FreeBSD
   loader, but OpenFirmware allows this.


io/prom/promosi.cc

 - don't worry about warning on of_release()


main.cc

 - Make the frame buffer's BAT-mapped translated address be the physical
   address and not IO_GCARD_FRAMEBUFFER_EA. All Mac framebuffers have this
   property, and it's relied on by the FreeBSD console code.
