This patchset modifies SeaBIOS source code to be able to build a firmware for the PA-RISC CPU architecture. This firmware can then be used to boot a virtual PA-RISC machine with PA-Linux and HP/UX on QEMU.
Where possible existing SeaBIOS drivers and infrastructure is reused. Since PA-RISC is native 32/64-Bit, the various segment accessors are not needed and replaced by simple variable accesses.
Helge Deller (31): Add config option for PA-RISC arch biosvar.h: Add accessors for various BIOS data areas Drivers: Use get_bda_ptr() BDA accessor byteorder.h: Add endianess conversion functions farptr.h: Add FLATPTR* accessor functions for parisc font.c: Disable built-in x86 font on parisc paravirt.h: Add PORT_QEMU_CFG_CTL for parisc pciinit.c: Initialize PA-RISC Dino PCI chip shadow.c: Compile int3 inline assembly on x86 only Add portaddr_t typedef to specify I/O port addresses ata.c: Allow to boot on PA-RISC ata.h: Add ATA IDE port addresses for PA-RISC blockcmd.c: Prevent unaligned access crash on PA-RISC scsi: Add fields for specifying target and lun of SCSI devices lsi-scsi.c: Convert SCSI script to little endian pci.c: Add PCI ports for PA-RISC and access PCI bus in little-endian rtc.h: Add CMOS/RTC addresses for PA-RISC serialio.h: Add serial port adresses for PA-RISC malloc.c: Implement a PA-RISC specific malloc() output.c: Add PA-RISC specific output behaviour output.c: Make printf() capable to print 64bit int values romfile.c: return values are returned as little-endian sercon.c: Use SEROFF_IIR constant stacks.h: Provide replacement for thread functions when !CONFIG_THREADS version.c: Mark version strings const x86.h: Provide replacement functions for PA-RISC parisc: Add PA-RISC related code string.c: reimplement mem*_far() functions for PA-RISC boot.c: Add boot disc chooser for PA-RISC block.c: Allow PA-RISC to boot from ATA drives ata.c: Add missing endianess conversion functions
Makefile | 9 +- Makefile.parisc | 192 ++++ src/Kconfig | 54 +- src/biosvar.h | 31 + src/block.c | 10 +- src/block.h | 2 + src/boot.c | 48 + src/byteorder.h | 74 ++ src/farptr.h | 14 +- src/font.c | 2 + src/fw/csm.c | 2 +- src/fw/paravirt.h | 7 + src/fw/pciinit.c | 53 +- src/fw/shadow.c | 2 + src/hw/ata.c | 70 +- src/hw/ata.h | 14 +- src/hw/blockcmd.c | 17 +- src/hw/blockcmd.h | 2 +- src/hw/esp-scsi.c | 2 +- src/hw/lsi-scsi.c | 6 +- src/hw/megasas.c | 2 +- src/hw/mpt-scsi.c | 2 +- src/hw/pci.c | 13 +- src/hw/pvscsi.c | 2 +- src/hw/rtc.h | 7 + src/hw/serialio.c | 2 +- src/hw/serialio.h | 10 +- src/hw/usb-msc.c | 2 +- src/hw/usb-uas.c | 2 +- src/hw/virtio-scsi.c | 2 +- src/malloc.c | 4 +- src/malloc.h | 8 +- src/output.c | 56 +- src/parisc/b160l.h | 630 +++++++++++ src/parisc/head.S | 319 ++++++ src/parisc/hppa.h | 370 +++++++ src/parisc/hppa_hardware.h | 49 + src/parisc/lasips2.c | 66 ++ src/parisc/lasips2.h | 17 + src/parisc/malloc.c | 91 ++ src/parisc/pafirmware.lds.S | 69 ++ src/parisc/parisc.c | 1997 +++++++++++++++++++++++++++++++++++ src/parisc/pdc.h | 694 ++++++++++++ src/parisc/sti.c | 179 ++++ src/parisc/sticore.h | 326 ++++++ src/parisc/stirom.c | 652 ++++++++++++ src/parisc/timer.c | 103 ++ src/post.c | 2 +- src/romfile.c | 4 +- src/sercon.c | 2 +- src/serial.c | 4 +- src/stacks.h | 17 +- src/string.c | 27 +- src/types.h | 8 +- src/version.c | 4 +- src/x86.h | 6 + 56 files changed, 6236 insertions(+), 123 deletions(-) create mode 100644 Makefile.parisc create mode 100644 src/parisc/b160l.h create mode 100644 src/parisc/head.S create mode 100644 src/parisc/hppa.h create mode 100644 src/parisc/hppa_hardware.h create mode 100644 src/parisc/lasips2.c create mode 100644 src/parisc/lasips2.h create mode 100644 src/parisc/malloc.c create mode 100644 src/parisc/pafirmware.lds.S create mode 100644 src/parisc/parisc.c create mode 100644 src/parisc/pdc.h create mode 100644 src/parisc/sti.c create mode 100644 src/parisc/sticore.h create mode 100644 src/parisc/stirom.c create mode 100644 src/parisc/timer.c