On 21.12.2009, at 10:24, Aurelien Jarno wrote:

> On Mon, Dec 21, 2009 at 01:22:12AM +0100, Alexander Graf wrote:
>> On PPC we have a 64-bit time base. Usually (PPC32) this is accessed using
>> two separate 32 bit SPR accesses to SPR_TBU and SPR_TBL.
>> 
>> On PPC64 the SPR_TBL register acts as 64 bit though, so we get the full
>> 64 bits as return value. If we only take the lower ones, fine. But Linux
>> wants to see all 64 bits or it breaks.
> 
> Good catch! However, I think this patch it's not fully complete and can
> be improved a bit
> - it's probably better to return a target_ulong value from
>  cpu_ppc_load_tbl() with an explicit cast here, so that we don't have
>  an implicit cast from 64-bit to 32-bit on qemu-system-powerpc (GCC may
>  warn on that with some flags or in future versions).
> - the store function also has to be fixed.

According to Book3:

It is not possible to write the entire 64-bit Time Base using a single 
instruction. The mttbl and mttbu extended mnemonics write the lower and upper 
halves of the Time Base (TBL and TBU), respectively, preserving the other half. 
These are extended mne- monics for the mtspr instruction; see page 83.

> - the same changes should be done for the alternate timebase.

I can't find traces of the alternative timebase in the docs :-(.

Alex

Reply via email to