Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/mm/sun4u/frame.c

    r720db0c r4872160  
    4949void frame_arch_init(void)
    5050{
     51        unsigned int i;
     52        pfn_t confdata;
     53
    5154        if (config.cpu_active == 1) {
    52                 unsigned int i;
    53                
    5455                for (i = 0; i < memmap.cnt; i++) {
    55                         /* To be safe, make the available zone possibly smaller */
    56                         uintptr_t new_start = ALIGN_UP((uintptr_t) memmap.zones[i].start,
    57                             FRAME_SIZE);
    58                         size_t new_size = ALIGN_DOWN(memmap.zones[i].size -
    59                             (new_start - ((uintptr_t) memmap.zones[i].start)), FRAME_SIZE);
    60                        
     56                        uintptr_t start = (uintptr_t) memmap.zones[i].start;
     57                        size_t size = memmap.zones[i].size;
     58
    6159                        /*
    6260                         * The memmap is created by HelenOS boot loader.
    6361                         * It already contains no holes.
    6462                         */
    65                        
    66                         pfn_t confdata = ADDR2PFN(new_start);
    67                        
     63
     64                        confdata = ADDR2PFN(start);
    6865                        if (confdata == ADDR2PFN(KA2PA(PFN2ADDR(0))))
    6966                                confdata = ADDR2PFN(KA2PA(PFN2ADDR(2)));
    70                        
    71                         zone_create(ADDR2PFN(new_start), SIZE2FRAMES(new_size),
     67                        zone_create(ADDR2PFN(start),
     68                            SIZE2FRAMES(ALIGN_DOWN(size, FRAME_SIZE)),
    7269                            confdata, 0);
    73                        
    74                         last_frame = max(last_frame, new_start + new_size);
     70                        last_frame = max(last_frame, start + ALIGN_UP(size,
     71                            FRAME_SIZE));
    7572                }
    76                
     73
    7774                /*
    7875                 * On sparc64, physical memory can start on a non-zero address.
     
    8380                frame_mark_unavailable(ADDR2PFN(KA2PA(PFN2ADDR(0))), 1);
    8481        }
    85        
     82
    8683        end_of_identity = PA2KA(last_frame);
    8784}
Note: See TracChangeset for help on using the changeset viewer.