[OpenBIOS] [Qemu-ppc] Running client with MMU off

BALATON Zoltan balaton at eik.bme.hu
Fri Jun 27 23:36:13 CEST 2014


On Thu, 26 Jun 2014, Alexander Graf wrote:
> On 26.06.14 01:36, BALATON Zoltan wrote:
>> On Wed, 25 Jun 2014, Alexander Graf wrote:
>>> On 25.06.14 12:40, BALATON Zoltan wrote:
>>>> On Wed, 25 Jun 2014, BALATON Zoltan wrote:
>>>>> ppc_store_sdr1: 0fe00000
>>>>> helper_store_sr: reg=0 20000400 00000000
>>>> [...]
>>>>> helper_store_sr: reg=0 00000000 20000400
>>>>> Raise exception at 0041cd00 => 00000003 (40000000)
>>>>> 
>>>>> ^^^ This exception should not happen. It is trying to handle it but the 
>>>>> handlers are not working yet and gets in an infinite loop. It boots if 
>>>>> MMU is disabled while this part runs but MorphOS does not disable it yet 
>>>>> and according to my oftest results they are enabled on Apple too. How 
>>>>> does it work on real hardware and why does it fail on QEMU? (Note the 
>>>>> the value of sr0 is identical to the one set by OpenBIOS and SDR1 is 
>>>>> unchanged so translations via the page table should still work, 
>>>>> shouldn't it?)
>>>> 
>>>> I was mistaken about the values being the same as it is zeroing sr0. So 
>>>> can this explain why translation via the page table fails after this and 
>>>> why an ISI is generated? Why are the sr registers set up with the values 
>>>> above by OpenBIOS? Could they be 0 instead?
>>> 
>>> SR registers are used to translate EAs to VAs. If you set them all to 0 
>>> they would end up getting the same VSID.
>> 
>> OK but why is SEGR_BASE defined as 0x0400 in arch/ppc/qemu/ofmem.c? 
>
> I guess to make it easier to debug vs empty SR registers and to make sure it 
> doesn't collide with a guest that sets SR registers to 0 temporarily?
>
> What does real Apple firmware use for their VSIDs?

I updated oftest to print sr registers too. From a test on iMac,1 it seems 
the values are just sr0=0, sr1=1, ... sr15=15.

Regards,
BALATON Zoltan



More information about the OpenBIOS mailing list