Changes in kernel/arch/mips64/src/mm/frame.c [2429e4a:4dee0cb] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/mips64/src/mm/frame.c
r2429e4a r4dee0cb 115 115 for (i = 0; i < init.cnt; i++) 116 116 if (overlaps(frame << ZERO_PAGE_WIDTH, ZERO_PAGE_SIZE, 117 KA2PA(init.tasks[i].addr), init.tasks[i].size)) {117 init.tasks[i].paddr, init.tasks[i].size)) { 118 118 safe = false; 119 119 break; … … 123 123 } 124 124 125 static void frame_add_region(pfn_t start_frame, pfn_t end_frame) 126 { 127 if (end_frame > start_frame) { 128 /* Convert 1M frames to 16K frames */ 129 pfn_t first = ADDR2PFN(start_frame << ZERO_PAGE_WIDTH); 130 pfn_t count = ADDR2PFN((end_frame - start_frame) << ZERO_PAGE_WIDTH); 131 125 static void frame_add_region(pfn_t start_frame, pfn_t end_frame, bool low) 126 { 127 if (end_frame <= start_frame) 128 return; 129 130 uintptr_t base = start_frame << ZERO_PAGE_WIDTH; 131 size_t size = (end_frame - start_frame) << ZERO_PAGE_WIDTH; 132 133 if (!frame_adjust_zone_bounds(low, &base, &size)) 134 return; 135 136 pfn_t first = ADDR2PFN(base); 137 size_t count = SIZE2FRAMES(size); 138 pfn_t conf_frame; 139 140 if (low) { 132 141 /* Interrupt vector frame is blacklisted */ 133 pfn_t conf_frame;134 142 if (first == 0) 135 143 conf_frame = 1; 136 144 else 137 145 conf_frame = first; 138 139 zone_create(first, count, conf_frame, 0); 140 141 if (phys_regions_count < MAX_REGIONS) { 142 phys_regions[phys_regions_count].start = first; 143 phys_regions[phys_regions_count].count = count; 144 phys_regions_count++; 145 } 146 zone_create(first, count, conf_frame, 147 ZONE_AVAILABLE | ZONE_LOWMEM); 148 } else { 149 conf_frame = zone_external_conf_alloc(count); 150 if (conf_frame != 0) 151 zone_create(first, count, conf_frame, 152 ZONE_AVAILABLE | ZONE_HIGHMEM); 153 } 154 155 if (phys_regions_count < MAX_REGIONS) { 156 phys_regions[phys_regions_count].start = first; 157 phys_regions[phys_regions_count].count = count; 158 phys_regions_count++; 146 159 } 147 160 } … … 156 169 * 157 170 */ 158 void frame_ arch_init(void)171 void frame_low_arch_init(void) 159 172 { 160 173 ipl_t ipl = interrupts_disable(); … … 207 220 208 221 if (!avail) { 209 frame_add_region(start_frame, frame );222 frame_add_region(start_frame, frame, true); 210 223 start_frame = frame + 1; 211 224 avail = true; … … 213 226 } 214 227 215 frame_add_region(start_frame, frame );228 frame_add_region(start_frame, frame, true); 216 229 217 230 /* Blacklist interrupt vector frame */ … … 229 242 } 230 243 244 void frame_high_arch_init(void) 245 { 246 } 247 231 248 void physmem_print(void) 232 249 {
Note:
See TracChangeset
for help on using the changeset viewer.