Subversion Repositories HelenOS-historic

Rev

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));