[OpenBIOS] PowerPC MMU translations property
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Mon Sep 10 00:49:31 CEST 2012
On 09/09/12 19:28, Andreas Tobler wrote:
> Hi,
>
> I'm trying to understand how the 'translations' entry (/cpus/PowerPC,G4
> for example) for PPC is created. Or is it taken from a template?
>
> When I use qemu and enter into OF I see translations only up to
> 80000000-800eb000. When I compare with a real PowerBook G4 I see some
> more above 800eb000, for example one which I'm looking for in OpenBIOS
> for the OF mapping:
>
> 0xff8000000-0xffc00000 -> 0x3fc00000-0x40000000
>
> This mapping describes the OF code mapping/translation of this
> particular PowerBook.
>
> In the code I was not able to understand the mechanics, so a hint on how
> to read would really be appreciated.
Hi Andreas,
There is a difference in the contents of the translations property
depending upon which architecture you are using, and so for PPC you need
to look at ofmem_arch_create_translation_entry() in arch/ppc/qemu/ofmem.c.
Basically OpenBIOS has a memory API called OFMEM shared between (nearly)
all architectures in libopenbios/ofmem_common.c. When the various
ofmem_* functions are called internally to set up memory
allocations/mappings, the OFMEM code updates the translations property
for you automatically by calling the architecture-specific OFMEM
routines as required.
What should happen is that OpenBIOS should present all the memory
mappings it has set up via the translations property, so that when a
kernel takes over it can add the bootstrap mappings into its own memory
map/page tables to ensure that they are maintained until the kernel has
fully taken over the memory management.
HTH,
Mark.
More information about the OpenBIOS
mailing list