[OpenBIOS] Running client with MMU off
BALATON Zoltan
balaton at eik.bme.hu
Sat Jun 21 03:12:57 CEST 2014
On Fri, 20 Jun 2014, Mark Cave-Ayland wrote:
> On 19/06/14 22:19, BALATON Zoltan wrote:
>> With the patch below I don't get DSI-s but it crashes in an ISI while
>> trying to replace the sr registers. How could this possibly work on real
>> hardware without getting any exceptions during replacing the vectors? Is
>> there a way to preload the TLB with code addresses too so we can avoid
>> the crash? How? (For data accessing it before calling the boot code is
>> enough to preload translations but how to avoid ISI-s?)
>
> Unfortunately, as far as I know there are only a few PPC processors that
> allow you to lock entries in the TLB and none of them were used in Macs.
>
> As for the code that generates the ISIs, is this in MorphOS as opposed to
> OpenBIOS? I guess something must have previously accessed an entry on the
> same page before the registers were updated, or maybe there is some kind of
> hardware readahead?
The code is in the MorphOS boot loader and what it does is trying to take
over memory management. Unfortunately it seems there is a period when it
already replaced the vectors but have not set up the TLB hash table yet so
it cannot actually handle exceptions. I could prevent DSIs but running the
code during this period generates ISI-s. If the code is run in the same
order on real hardware then it's not likely that the page is accessed
there and not on QEMU. A readahead could explain it but I don't know if
that happens. I have no better idea now than manually generating faults
for all pages where the client code is loaded before calling it. I'll try
to implement that unless someone can suggest a better solution.
Regards,
BALATON Zoltan
More information about the OpenBIOS
mailing list