Rev 952 | Rev 973 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 952 | Rev 963 | ||
---|---|---|---|
Line 194... | Line 194... | ||
194 | segment = malloc(segment_size, 0); |
194 | segment = malloc(segment_size, 0); |
195 | if (entry->p_filesz < entry->p_memsz) |
195 | if (entry->p_filesz < entry->p_memsz) |
196 | memsetb((__address) (segment + entry->p_filesz), segment_size - entry->p_filesz, 0); |
196 | memsetb((__address) (segment + entry->p_filesz), segment_size - entry->p_filesz, 0); |
197 | memcpy(segment, (void *) (((__address) elf) + entry->p_offset), entry->p_filesz); |
197 | memcpy(segment, (void *) (((__address) elf) + entry->p_offset), entry->p_filesz); |
198 | 198 | ||
199 | a = as_area_create(as, AS_AREA_TEXT, SIZE2FRAMES(entry->p_memsz), entry->p_vaddr); |
199 | a = as_area_create(as, type, SIZE2FRAMES(entry->p_memsz), entry->p_vaddr); |
200 | if (!a) |
200 | if (!a) |
201 | return EE_IRRECOVERABLE; |
201 | return EE_IRRECOVERABLE; |
202 | 202 | ||
203 | for (i = 0; i < SIZE2FRAMES(entry->p_filesz); i++) { |
203 | for (i = 0; i < SIZE2FRAMES(entry->p_filesz); i++) { |
204 | as_set_mapping(as, entry->p_vaddr + i*PAGE_SIZE, KA2PA(((__address) segment) + i*PAGE_SIZE)); |
204 | as_set_mapping(as, entry->p_vaddr + i*PAGE_SIZE, KA2PA(((__address) segment) + i*PAGE_SIZE)); |