Mercurial > flash_v2
changeset 1253:9ecd8873f657
Use LMA, not VMA
| author | gthomas |
|---|---|
| date | Mon, 29 Sep 2003 14:49:46 +0000 |
| parents | 4dfb5c337649 |
| children | 29e672adfc06 |
| files | packages/redboot/current/ChangeLog packages/redboot/current/src/load.c |
| diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,10 @@ +2003-09-29 Gary Thomas <gary@mlbassoc.com> + + * src/load.c (load_elf_image): Use LMA (loader memory address), instead + of VMA (virtual memory address) to load code. If LMA != VMA, it's up + to the loaded program to figure it out. + Inspired by Artur Lipowski <LAL@pro.onet.pl> + 2003-09-26 Nick Garnett <nickg@balti.calivar.com> * doc/redboot_installing.sgml: Fixed bogus memory sizes in AT91
--- a/packages/redboot/current/src/load.c +++ b/packages/redboot/current/src/load.c @@ -340,8 +340,8 @@ load_elf_image(getc_t getc, unsigned lon // Set address offset based on lowest address in file. addr_offset = 0xFFFFFFFF; for (phx = 0; phx < ehdr.e_phnum; phx++) { - if (phdr[phx].p_vaddr < addr_offset) { - addr_offset = phdr[phx].p_vaddr; + if (phdr[phx].p_paddr < addr_offset) { + addr_offset = phdr[phx].p_paddr; } } addr_offset = (unsigned long)base - addr_offset; @@ -351,7 +351,7 @@ load_elf_image(getc_t getc, unsigned lon for (phx = 0; phx < ehdr.e_phnum; phx++) { if (phdr[phx].p_type == PT_LOAD) { // Loadable segment - addr = (unsigned char *)phdr[phx].p_vaddr; + addr = (unsigned char *)phdr[phx].p_paddr; len = phdr[phx].p_filesz; if ((unsigned long)addr < lowest_address) { lowest_address = (unsigned long)addr;
