Mark, using your hints I was able to establish that the ELF header is not present.
I will try (I'm not so expert in C) to take a look at the files you suggest me.
Thanks, Ciao

2010/9/15 Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>
Andreas Färber wrote:

qemu-system-ppc64 w/ either stock QEMU OpenBIOS or r862 with OSX host and ppc MMU patches:

C>> annot manage 'OHCI USB controller' PCI device type 'usb':
 >>  106b 3f (c 3 10)

 >> =============================================================
 >> OpenBIOS 1.0 [Aug 17 2010 14:41]
 >> Configuration device id QEMU version 1 machine id 3
 >> CPUs: 1
 >> Memory: 128M
 >> UUID: 00000000-0000-0000-0000-000000000000
 >> CPU type PowerPC,970FX
Welcome to OpenBIOS v1.0 built on Aug 17 2010 14:41

0 > load cd:,\ppc\chrp\bootfile.exe  ok
0 > go No valid state has been set by load or init-program
 ok
0 > boot cd:,\ppc\chrp\bootfile.exe No valid state has been set by load or init-program
 ok
0 > dir cd:,\ppc\chrp
     2048 2007-07-03 17:39:44 .\
     2048 2007-07-03 17:32:05 ..\
 12487680 2007-07-03 17:39:24 bootfile.exe
 ok
0 >


Also, what format is the AIX bootloader - is it an ELF executable?

$ file /Volumes/CDROM/ppc/chrp/bootfile.exe
/Volumes/CDROM/ppc/chrp/bootfile.exe: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, corrupted section header size

Andreas

Right. So in the case that you see the message "No valid state has been set by load or init-program", this means that either the load failed or init-program failed to detect a valid ELF header for the current architecture.

First thing to check is that the executable is being loaded from disk, e.g.


load cd:,\ppc\chrp\bootfile.exe

then dump the first 200 bytes of memory to make sure an ELF header is present (i.e. the load from disk was successful):

load-base 200 dump

If the ELF header is present then it must be init-program which is failing. If the ELF header is not present, you'll need to take a look in either libopenbios/load.c and/or libopenbios/elf_load.c at elf_load() and elf_init_program().

The one thing that I did notice is that you are attempting to launch a PPC32 ELF file under a PPC64 Qemu, so perhaps it is the checks in is_elf() which are failing? Try taking a look at the relevant constants in include/arch/ppc/elf.h.


HTH,


Mark.

--
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs

--
OpenBIOS                 http://openbios.org/
Mailinglist:  http://lists.openbios.org/mailman/listinfo
Free your System - May the Forth be with you



--
Cordiali Saluti/Best Regards

Massimo Montecchi
Modena - Italy