Calculating virtual address from physical address

Grant Likely grant.likely at secretlab.ca
Sun May 7 05:38:32 EST 2006


On 5/6/06, Chris Dumoulin <cdumoulin at ics-ltd.com> wrote:
> You said that the temporary TLB entries setup in head_4xx.S will eventually be replaced.
> Where is the code that creates these new TLB entries later on? Are the 'real' TLB entries
> only created once, and persist for as long as the system is running, or do TLB entries
> change often while the system is running?

The kernel maintains a list of mappings between virtual and physical
space.  When the processor takes a TLB miss exception, then exception
handler loads the needed mapping into the TLB and returns from
exception.  (Look in head_4xx.S; specifically at finish_tlb_load). 
TLB entries are loaded in a round-robin fashion as needed.  Since your
early TLB mappings aren't in the kernel page tables; they get
overwritten and can't be reloaded by the TLB miss exception handler.

> Can you point me to some information about Grant's platform bus changes that you were
> talking about? I am using a custom V2Pro board, and I'd be interested to see if this code
> is something I should be looking at.

The platform bus changes moves the devices to use the "Platform Bus"
infrastructure.  It's kind of a move away from multiple
processor-specific bus management schemes for "simple" busses.  ie. 
If the processor can access it without special setup code; the device
can go on the platform bus.

Check out http://patchwork.ozlabs.org/linuxppc/ and search for my
name.  There's about 9 patches grouped together.

Cheers,
g.

--
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
(403) 399-0195



More information about the Linuxppc-embedded mailing list