kernel.ld.arm virt_address

Wesley Miaw wesley at
Wed Nov 9 03:03:38 CET 2011

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.

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.

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.)

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).

Wesley Miaw
wesley at

More information about the l4-hackers mailing list