Ignore:
File:
1 edited

Legend:

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

    rccc362a1 r8b6aa39  
    3232
    3333#include <mm/frame.h>
    34 #include <arch/boot/boot.h>
    3534#include <arch/mm/frame.h>
    36 #include <arch/drivers/ucb.h>
    3735#include <mm/as.h>
    3836#include <config.h>
     
    4139#include <align.h>
    4240#include <macros.h>
     41
    4342#include <print.h>
    4443
    45 uintptr_t physmem_start;
    46 uintptr_t htif_frame;
    47 uintptr_t pt_frame;
    48 memmap_t memmap;
     44size_t hardcoded_unmapped_ktext_size = 0;
     45size_t hardcoded_unmapped_kdata_size = 0;
    4946
    5047void physmem_print(void)
     
    5249}
    5350
    54 static void frame_common_arch_init(bool low)
    55 {
    56         pfn_t minconf =
    57             max3(ADDR2PFN(physmem_start), htif_frame + 1, pt_frame + 1);
    58        
    59         for (size_t i = 0; i < memmap.cnt; i++) {
    60                 /* To be safe, make the available zone possibly smaller */
    61                 uintptr_t base = ALIGN_UP((uintptr_t) memmap.zones[i].start,
    62                     FRAME_SIZE);
    63                 size_t size = ALIGN_DOWN(memmap.zones[i].size -
    64                     (base - ((uintptr_t) memmap.zones[i].start)), FRAME_SIZE);
    65                
    66                 if (!frame_adjust_zone_bounds(low, &base, &size))
    67                         return;
    68                
    69                 pfn_t pfn = ADDR2PFN(base);
    70                 size_t count = SIZE2FRAMES(size);
    71                 pfn_t conf;
    72                
    73                 if (low) {
    74                         if ((minconf < pfn) || (minconf >= pfn + count))
    75                                 conf = pfn;
    76                         else
    77                                 conf = minconf;
    78                        
    79                         zone_create(pfn, count, conf,
    80                             ZONE_AVAILABLE | ZONE_LOWMEM);
    81                 } else {
    82                         conf = zone_external_conf_alloc(count);
    83                         if (conf != 0)
    84                                 zone_create(pfn, count, conf,
    85                                     ZONE_AVAILABLE | ZONE_HIGHMEM);
    86                 }
    87         }
    88 }
    8951
    9052void frame_low_arch_init(void)
    9153{
    92         frame_common_arch_init(true);
    93        
    94         frame_mark_unavailable(htif_frame, 1);
    95         frame_mark_unavailable(pt_frame, 1);
    9654}
    9755
    9856void frame_high_arch_init(void)
    9957{
    100         frame_common_arch_init(false);
    10158}
    10259
Note: See TracChangeset for help on using the changeset viewer.