Changeset 2686705 in mainline for kernel/arch/arm32/src/mm/frame.c


Ignore:
Timestamp:
2011-11-20T17:27:41Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
42f60375
Parents:
ad12b5ea
Message:

Use frame_adjust_zone_bounds() on arm32.

File:
1 edited

Legend:

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

    rad12b5ea r2686705  
    4545uintptr_t last_frame = 0;
    4646
     47static void frame_common_arch_init(bool low)
     48{
     49        uintptr_t base;
     50        size_t size;
     51
     52        machine_get_memory_extents(&base, &size);
     53        base = ALIGN_UP(base, FRAME_SIZE);
     54        size = ALIGN_DOWN(size, FRAME_SIZE);
     55       
     56        if (!frame_adjust_zone_bounds(low, &base, &size))
     57                return;
     58
     59        if (low) {
     60                zone_create(ADDR2PFN(base), SIZE2FRAMES(size),
     61                    BOOT_PAGE_TABLE_START_FRAME +
     62                    BOOT_PAGE_TABLE_SIZE_IN_FRAMES,
     63                    ZONE_AVAILABLE | ZONE_LOWMEM);
     64        } else {
     65                pfn_t conf = zone_external_conf_alloc(SIZE2FRAMES(size));
     66
     67                zone_create(ADDR2PFN(base), SIZE2FRAMES(size), conf,
     68                    ZONE_AVAILABLE | ZONE_HIGHMEM);
     69        }
     70       
     71}
     72
    4773/** Create low memory zones. */
    4874void frame_low_arch_init(void)
    4975{
    50         uintptr_t mem_start, mem_end, mem_size;
     76        uintptr_t mem_start;
     77        size_t mem_size;
    5178
    5279        machine_get_memory_extents(&mem_start, &mem_size);
     
    5481        last_frame = ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE);
    5582       
    56         mem_start = ALIGN_UP(mem_start, FRAME_SIZE);
    57         mem_end = min(ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE),
    58             config.identity_size);
     83        frame_common_arch_init(true);
    5984
    60         zone_create(ADDR2PFN(mem_start), SIZE2FRAMES(mem_end - mem_start),
    61             BOOT_PAGE_TABLE_START_FRAME + BOOT_PAGE_TABLE_SIZE_IN_FRAMES,
    62             ZONE_AVAILABLE | ZONE_LOWMEM);
    63        
    6485        /* blacklist boot page table */
    6586        frame_mark_unavailable(BOOT_PAGE_TABLE_START_FRAME,
     
    7293void frame_high_arch_init(void)
    7394{
    74         uintptr_t mem_start, mem_end, mem_size;
    75         size_t frames;
    76         uintptr_t conf;
    77 
    78         machine_get_memory_extents(&mem_start, &mem_size);
    79 
    80         mem_end = ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE);
    81         if (mem_end <= config.identity_size) {
    82                 /* There is no high memory to init. */
    83                 return;
    84         }
    85 
    86         frames = SIZE2FRAMES(mem_end - config.identity_size);
    87         conf = zone_external_conf_alloc(frames);
    88 
    89         zone_create(ADDR2PFN(config.identity_size), frames, conf,
    90             ZONE_AVAILABLE | ZONE_HIGHMEM);
     95        frame_common_arch_init(false);
    9196}
    9297
Note: See TracChangeset for help on using the changeset viewer.