So I decided a better idea was to keep the OpenBIOS ROM where it is
and then instead use the location 0x06800000 for the memory
allocations so that the 0x4000 block doesn't get smashed. It was far
more feasible than moving where the ROM is stored, and I don't think
anything cares about the contents of 0x06800000 to 06FFFFFF anyway.
Also, the reason I was getting "invalid opcode" was because Open
Hack'Ware's XCOFF loader didn't take into account some other unknown
variable which PearPC accounted for. I added the necessary code to
make that work.
So now instead of an invalid opcode, we get this (which I don't know
how to debug. it looks like a Forth exception):
Alcarin:qemu steven$ make -C ppc-softmmu &&
ppc-softmmu/qemu-system-ppc -L pc-bios -cdrom
~/Development/MacOSX-10.4.iso -boot d -M mac99 -nographic
make: Nothing to be done for `all'.
=============================================================
OpenBIOS 1.0 [Apr 20 2009 03:23]
Configuration device id QEMU version 1 machine id 1
CPUs: 1
Memory: 128M
UUID: 00000000-0000-0000-0000-000000000000
CPU type PowerPC,G4
Welcome to OpenBIOS v1.0 built on Apr 20 2009 03:23
YABOOT - yaboot_startup: Entering boot, no path
CHRP - try_chrp_script: Trying cd:0,ppc\bootinfo.txt
MAC-PARTS: macparts_probe 4552 ?= 4552
MAC-PARTS: macparts_open 0
MAC-PARTS: macparts_get_info 0 2832209920
MAC-PARTS: macparts_block_size = 200
ELF - try_chrp_script: Can't open cd:0,ppc\bootinfo.txt
CHRP - try_chrp_script: Trying cd:0,System\Library\CoreServices
\BootX
MAC-PARTS: macparts_probe 4552 ?= 4552
MAC-PARTS: macparts_open 0
MAC-PARTS: macparts_get_info 0 2832209920
MAC-PARTS: macparts_block_size = 200
CHRP - try_chrp_script: got bootscript
load-base
begin
dup 6 " </CHRP" $= if
6 + dup 6 " -BOOT>" $= if
8 + true
else
false
then
else
1+ false
then
until
( xcoff-base )
load-size over load-base - -
( xcoff-base xcoff-size )
load-base swap move
init-program go
ELF - encode_bootpath: bootpath cd:0,<NULL>\ bootargs <NULL>
$=:>> XCOFF - load_xcoff: Loading 'System\Library\CoreServices\BootX'
XCOFF - load_xcoff: XCOFF file with 3 sections entry:05616ecc
XCOFF - load_xcoff: Read next header (5c)
XCOFF - load_xcoff: Load '.text' section from 5c d4 to 5600000
(28000)
XCOFF - load_xcoff: Found entry point offset in '.text': 94112
XCOFF - load_xcoff: Read next header (84)
XCOFF - load_xcoff: Load '.data' section from 84 280d4 to 5628000
(2000)
XCOFF - load_xcoff: Read next header (ac)
XCOFF - load_xcoff: Erase '.bss' section at 562a000 size: 3a000
XCOFF - load_xcoff: Found actual entry point: 05600adc
ELF - transfer_control_to_elf: Starting ELF boot loader
unselect-dev:interpret: exception -13 caught
EXIT
0 > Killed
Any ideas?