Changeset 1cc2974 in mainline for kernel/generic/src/lib/elf.c
- Timestamp:
- 2008-05-26T18:56:34Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5a55ae6
- Parents:
- fa832eb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/lib/elf.c
rfa832eb r1cc2974 101 101 return EE_UNSUPPORTED; 102 102 103 /* Check if the ELF image starts on a page boundary */ 104 if (ALIGN_UP((uintptr_t)header, PAGE_SIZE) != (uintptr_t)header) 105 return EE_UNSUPPORTED; 106 103 107 /* Walk through all segment headers and process them. */ 104 108 for (i = 0; i < header->e_phnum; i++) { … … 183 187 int flags = 0; 184 188 mem_backend_data_t backend_data; 189 uintptr_t base; 190 size_t mem_sz; 185 191 186 192 backend_data.elf = elf; … … 202 208 flags |= AS_AREA_CACHEABLE; 203 209 204 /* 205 * Check if the virtual address starts on page boundary. 210 /* 211 * Align vaddr down, inserting a little "gap" at the beginning. 212 * Adjust area size, so that its end remains in place. 206 213 */ 207 if (ALIGN_UP(entry->p_vaddr, PAGE_SIZE) != entry->p_vaddr)208 return EE_UNSUPPORTED;209 210 a = as_area_create(as, flags, entry->p_memsz, entry->p_vaddr,214 base = ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE); 215 mem_sz = entry->p_memsz + (entry->p_vaddr - base); 216 217 a = as_area_create(as, flags, mem_sz, base, 211 218 AS_AREA_ATTR_NONE, &elf_backend, &backend_data); 212 219 if (!a)
Note:
See TracChangeset
for help on using the changeset viewer.