kernel.ld.arm virt_address

Adam Lackorzynski adam at os.inf.tu-dresden.de
Thu Nov 10 11:48:03 CET 2011


On Tue Nov 08, 2011 at 18:03:38 -0800, Wesley Miaw wrote:
> I'm trying to understand where the value of virt_address inside
> kernel.ld.arm is coming from. The value is currently 0xf0000000 and the
> kernel's interrupt vector table is placed at 0xffff0000.

Which is a processor requirement.
 
> On my Cortex-A9 + uATX Versatile Express board this corresponds to the HSB
> AXI (peripherals communication bus). The memory map for the RealView
> Emulation Baseboard maps the 0xf0000000 area to logic tile site 2.

Those are physical addresses, vectors are virtual.

> An objdump of the fiasco image shows that a number of kernel sections are
> being placed into 0xf0000000 and higher. And things work, but I would
> think that the correct address should be somewhere in RAM. (RAM which you
> then have to not withhold from sigma0.)

The kernel also runs in virtual addresses, so 0xf0000000 is backed with
memory.

> When I try to move the virt_address and .ivt address to somewhere in DRAM
> like 0x90000000 and 0x9fffffff respectively the kernel fails to load.
> Maybe because access is restricted although I don't think the MMU would
> have been turned on yet (but I haven't yet found the place where the MMU
> is turned on--I would guess by sigma0 or fiasco).

You cannot move the vector table somewhere else, and also again
virt != phys.



Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list