Subject: Re: The Firepower bugs - especially saving interrupt vectors?
To: None <drahn@pacific.urbana.mcd.mot.com>
From: Wolfgang Solfrank <ws@kurt.tools.de>
List: port-powerpc
Date: 12/18/1996 22:30:55
> Is the firmware not running in real mode or does the firmware
> have the impresstion that "real mode" is mapped 1-to-1 with vm turned on?
> This is the situation on the MCG firmware which is based on Firmworks
> openfirmware, same as Firepower. 

If you request the client should be run in real mode, it is irrelevant in
what mode the firmware itself runs.  Actually, the firmware has to run
at least in part with some vm mapping to access actual hardware.  But it is
required that when the client is started, the cpu be switched into real mode,
i.e. IR and DR must be turned off.

Since the Firmworks OpenFirmware obviously doesn't support real mode clients
(actually the situation is a bit funny with regard to real mode clients: it
detects that the client wants real mode, so it sets the new mode and does a
reset; but since the firmware doesn't support real mode, it comes up in
virtual mode, checks the client again, and continues to reset :-)), I did
a hack that practically emulates a real mode client interface.  I haven't
checked, but probably there are some places that require the 1-1 mapping
found in the Firmworks OpenFirmware within this interface.

> the text and data are mapped 1-to-1 for the MCG systems but the
> stack actually is not, it is in segment 6.

Not in the Firepower implementation.  The stack is using 1-1 mapped memory
there, too.

> What is the real definition of real mode? Running with vm turned off
> or running mapped 1-to-1.

Definitely that the client gets started with mapping turned off, and that the
callback to the firmware is also done with mapping turned off.  I have to
admit that this isn't explicitly stated in the PowerPC processor binding to
OpenFirmware.  However...

Since the definition in the PowerPC processor bindings to OpenFirmware expects
the firmware to save and restore "the state of all relevant translation
resources" and the entry to to the client interface handler is a real address,
doing otherwise wouldn't make too much sense.  In addition, the description
of the initial register values of the client program refers to the section
describing real mode vs. virtual mode for the IR and DR bits.
--
ws@TooLs.DE     (Wolfgang Solfrank, TooLs GmbH) 	+49-228-985800