>The pointer to this new is saved is saved in task structure. Why is it that
>each task needs its own copy of the translation table is unclear to me.
Each task might have different memory mappings and the easiest way to cope
with this is to give each one a completely separate page table. It would be
possible to have a common L1 table and swap around the entries in it but this
would add complexity for fairly little gain.
>original translation table into this new buffer. However, it starts copying
>the entries at the RAM address offset (0xc00000000 for Brutus or 0x20000000
>for my board). Note, unlike the Brutus code that mapped all IO to virtual
Why have you mapped the kernel RAM so low down? This will seriously reduce
your available address space for user tasks, especially if you have I/O at
even smaller addresses. Unless there is a particular reason to do otherwise
you probably want to keep the identity mapping of RAM at 0xc0000000.
>seems strange to me is that the Brutus kernel does not seem copy the
>exception vector table entry, virtual address 0x0000000 initialized by
>function setup_pagetables (mm_init.h), from the old translation table into
Doesn't get_pgd_slow do this?
>I tried copying all (16k) the translation table (instead of just part of it)
>into the new table and the kernel didn't hang after the TLB flush but it
I suspect that copying the (now stale) user mappings may bring you to grief.
You want to copy just the kernel and I/O segments.
p.
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]