Ignore:
File:
1 edited

Legend:

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

    rda1bafb r4872160  
    4545void physmem_print(void)
    4646{
     47        unsigned int i;
     48       
    4749        printf("Base       Size\n");
    4850        printf("---------- ----------\n");
    49        
    50         size_t i;
     51               
    5152        for (i = 0; i < memmap.cnt; i++) {
    5253                printf("%#10x %#10x\n", memmap.zones[i].start,
    53                     memmap.zones[i].size);
     54                        memmap.zones[i].size);
    5455        }
    5556}
     
    5960        pfn_t minconf = 2;
    6061        size_t i;
     62        pfn_t start, conf;
     63        size_t size;
    6164       
    6265        for (i = 0; i < memmap.cnt; i++) {
    63                 pfn_t start = ADDR2PFN(ALIGN_UP((uintptr_t) memmap.zones[i].start,
    64                     FRAME_SIZE));
    65                 size_t size = SIZE2FRAMES(ALIGN_DOWN(memmap.zones[i].size, FRAME_SIZE));
     66                start = ADDR2PFN(ALIGN_UP((uintptr_t) memmap.zones[i].start, FRAME_SIZE));
     67                size = SIZE2FRAMES(ALIGN_DOWN(memmap.zones[i].size, FRAME_SIZE));
    6668               
    67                 pfn_t conf;
    6869                if ((minconf < start) || (minconf >= start + size))
    6970                        conf = start;
     
    7273               
    7374                zone_create(start, size, conf, 0);
    74                 if (last_frame < ALIGN_UP((uintptr_t) memmap.zones[i].start
    75                     + memmap.zones[i].size, FRAME_SIZE))
    76                         last_frame = ALIGN_UP((uintptr_t) memmap.zones[i].start
    77                             + memmap.zones[i].size, FRAME_SIZE);
     75                if (last_frame < ALIGN_UP((uintptr_t) memmap.zones[i].start + memmap.zones[i].size, FRAME_SIZE))
     76                        last_frame = ALIGN_UP((uintptr_t) memmap.zones[i].start + memmap.zones[i].size, FRAME_SIZE);
    7877        }
    7978       
     
    8382       
    8483        /* Mark the Page Hash Table frames as unavailable */
    85         uint32_t sdr1 = sdr1_get();
    86        
    87         // FIXME: compute size of PHT exactly
    88         frame_mark_unavailable(ADDR2PFN(sdr1 & 0xffff000), 16);
     84        uint32_t sdr1;
     85        asm volatile (
     86                "mfsdr1 %0\n"
     87                : "=r" (sdr1)
     88        );
     89        frame_mark_unavailable(ADDR2PFN(sdr1 & 0xffff000), 16); // FIXME
    8990}
    9091
Note: See TracChangeset for help on using the changeset viewer.