Changeset 2686705 in mainline for kernel/arch/arm32/src/mm/frame.c
- Timestamp:
- 2011-11-20T17:27:41Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
- Children:
- 42f60375
- Parents:
- ad12b5ea
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/mm/frame.c
rad12b5ea r2686705 45 45 uintptr_t last_frame = 0; 46 46 47 static 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 47 73 /** Create low memory zones. */ 48 74 void frame_low_arch_init(void) 49 75 { 50 uintptr_t mem_start, mem_end, mem_size; 76 uintptr_t mem_start; 77 size_t mem_size; 51 78 52 79 machine_get_memory_extents(&mem_start, &mem_size); … … 54 81 last_frame = ALIGN_DOWN(mem_start + mem_size, FRAME_SIZE); 55 82 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); 59 84 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 64 85 /* blacklist boot page table */ 65 86 frame_mark_unavailable(BOOT_PAGE_TABLE_START_FRAME, … … 72 93 void frame_high_arch_init(void) 73 94 { 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); 91 96 } 92 97
Note:
See TracChangeset
for help on using the changeset viewer.