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