Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Fwd: evbarm ldscript vs. KERNEL_BASE_PHYS != KERNEL_BASE_VIRT



Nick Hudson wrote:
On Monday 10 March 2008 20:11:27 Rafal Boni wrote:
Oops, I guess there isn't a separate evbarm list; forwarding here.

--rafal

Encapsulated message
  evbarm ldscript vs. KERNEL_BASE_PHYS != KERNEL_BASE_VIRT
 From: Rafal Boni <rafal%pobox.com@localhost>
 To: port-evbarm%netbsd.org@localhost
 CC: port-hpcarm%netbsd.org@localhost

If I build a kernel where KERNEL_BASE_PHYS != KERNEL_BASE_VIRT, the BSS
ends up having it's (ELF) physaddr set to one based at KERNEL_BASE_VIRT
instead of KERNEL_BASE_PHYS.  This seems like a bug to me and it makes
it hard for me to correctly load such a kernel, since my loader tries
to zero memory that's likely unmapped at the time.

Diff that fixes it for me is below; I thought I'd pass this by the list
for feedback since I'm far from an ARM gooroo.

I think this is standard linker behaviour


"   The linker will normally set the LMA equal to the VMA.  You can
change that by using the `AT' keyword.  The expression LMA that follows
the `AT' keyword specifies the load address of the section."

Sorry, I guess I should have added a bit of context. The LMA is set to an address based at KERNEL_BASE_PHYS for the text & data sections in the evbarm linker script already; it just isn't done so for the BSS (& sbss, etc.).

My question is whether it was only done for text & data (not bss, sbss, etc.) due to an oversight, or was this intentional? It certainly seems wrong to me, but I don't own any of the evbarm-supported eval boards, so can't say it has no side effects there.

--rafal


Home | Main Index | Thread Index | Old Index