[OpenBIOS] PReP PowerPC "emulation"

Andreas Färber andreas.faerber at web.de
Sun Sep 26 20:53:30 CEST 2010


Am 26.09.2010 um 14:12 schrieb Mark Cave-Ayland:

> Andreas Färber wrote:
>
>> The following patch does wonders, it changes the ppc config to  
>> match sparc64 wrt ISO9660:
>
> Ah wait a second - I think I know what's happening here. Several  
> months ago I found a couple of bugs in fs/iso9660/* related to  
> loading files from CD. I seem to recall:
>
> i) The filenames all had to be in capital letters
> ii) Sometimes I had to put an extra . at the end
>
> I found these bugs by stepping through iso9660_opendir() under gdb.  
> So that is likely what's happening here - OpenBIOS is unable to  
> locate the file from the filesystem at boot time.

iso9660_open() actually succeeds for lowercase \ppc\chrp\bootfile.exe.  
Replacing strcmp() with strcasecmp() in seek_name() made no visible  
difference. It probably depends on the case on the disk, some  
directories are uppercase here, some lowercase.

diff --git a/fs/iso9660/iso9660_opendir.c b/fs/iso9660/iso9660_opendir.c
index 10cb89d..49eab4b 100644
--- a/fs/iso9660/iso9660_opendir.c
+++ b/fs/iso9660/iso9660_opendir.c
@@ -55,7 +55,7 @@ static struct iso_directory_record *  
seek_name(iso9660_VOLUME *volume,
         while ((idr = iso9660_readdir(dir)) != NULL)
         {
                 iso9660_name(volume, idr, name_buf);
-               if (strcmp(name, name_buf) == 0)
+               if (strcasecmp(name, name_buf) == 0)
                 {
                         result = idr_new(idr);
                         iso9660_closedir(dir);


Some random observations:

* Changing some file in fs/iso9660/ and re-running `make` in obj-ppc  
causes LD to fail with multiple/undefined symbols. Removing ./libfs.a  
first and then re-running `make` works fine.

* The ofmem_claim() hack I tried for Haiku does not help with AIX. AIX  
tries to claim 0x00200000 bytes at location 0x07e00000, which overlaps  
with OpenBIOS at rom_base()==0x07f00000. Haiku by comparison claims  
0x00100000 bytes at 0x0 and ended up at a different location by my  
patch (0x07e00000 vs. 0x07f00000).

* The two AIX "NULL phandle" messages go away and the processor count  
is detected as 1 when running with -m 1024:

-------------------------------------------------------------------------------
                                 Welcome to AIX.
                        boot image timestamp: 01:75 2B/75
NULL ihandle                 The current time and date: 00:00:00  
156828/00/0008
         processor count: 1;  memory size: 1024MB;  kernel size: 8391752
                     boot device: cd:\ppc\chrp\bootfile.exe
Validation failed: the "/rtas" device node does not exist.
EXIT
0 >

The "NULL ihandle" stems from call-method being called with 0x0  
ihandle for get-time. This is caused by open for the rtc node  
returning 0x0 on ppc64. ppc output follows:

-------------------------------------------------------------------------------
                                 Welcome to AIX.
                        boot image timestamp: 01:75 2B/75
                  The current time and date: 18:08:20 09/26/2010
         processor count: 1;  memory size: 1024MB;  kernel size: 8391752
                     boot device: cd:\ppc\chrp\bootfile.exe



            ERROR: This system is not supported for use with AIX 6.1.
              model: Power Macintosh        processor: PowerPC,750


                AIX 6.1 requires the POWER4 (or later) processor.

EXIT
0 >

Andreas


More information about the OpenBIOS mailing list