Subject: Re: The Kernel for powermacs
To: None <port-powerpc@NetBSD.ORG, youngdrow@geocities.com>
From: Wolfgang Solfrank <ws@kurt.tools.de>
List: port-powerpc
Date: 12/17/1997 14:15:36
> FFF00400... a memory address?  An exception code? -1047552 in decimal...go
> figure.  What the heck are default catches anyway?

FFF00400 is the "instruction storage interrupt" vector.  That means, that the
processor got a page fault when trying to get some instruction and took a
fault, i.e. jumped to the address 0xfff00400 after disabling the mmu.

However, it shows one of the problems with Apple "OpenFirmware" (note the
quotes!).  The PowerPC processor binding to IEEE1275 (i.e. OpenFirmware) is
quite explicit that the firmware is required to copy itself from ROM to RAM
and thus to change the trap vectors from 0xfff0#### to 0x0000#### (these are
the only two possible values for the trap vector).  This then allows the
kernel ("client program" in OpenFirmware speak) to change the trap vector
for some of the faults leaving alone any other trap vectors.  Since the
Apple firmware doesn't do that and presumably keeps running from the ROM
image, overwriting the trap vector for page faults with the ones needed
by e.g. NetBSD isn't possible.  (Not that this would work with the current
implementation, as the code for the trap vectors currently assume that they
are running in low, not in high core).

Hope this makes things a bit clearer (and sorry for the bad news :-().

Ciao,
Wolfgang
-- 
ws@TooLs.DE     (Wolfgang Solfrank, TooLs GmbH) 	+49-228-985800