x86 multiboot.h
Change-Id: I245564a98fb9e2572b88f8feb7411ad6800a543c
This commit is contained in:
+14
-14
@@ -26,7 +26,7 @@ void print_memmap(kinfo_t *cbi)
|
||||
int m;
|
||||
assert(cbi->mmap_size < MAXMEMMAP);
|
||||
for(m = 0; m < cbi->mmap_size; m++) {
|
||||
phys_bytes addr = cbi->memmap[m].addr, endit = cbi->memmap[m].addr + cbi->memmap[m].len;
|
||||
phys_bytes addr = cbi->memmap[m].mm_base_addr, endit = cbi->memmap[m].mm_base_addr + cbi->memmap[m].mm_length;
|
||||
printf("%08lx-%08lx ",addr, endit);
|
||||
}
|
||||
printf("\nsize %08lx\n", cbi->mmap_size);
|
||||
@@ -46,8 +46,8 @@ void cut_memmap(kinfo_t *cbi, phys_bytes start, phys_bytes end)
|
||||
|
||||
for(m = 0; m < cbi->mmap_size; m++) {
|
||||
phys_bytes substart = start, subend = end;
|
||||
phys_bytes memaddr = cbi->memmap[m].addr,
|
||||
memend = cbi->memmap[m].addr + cbi->memmap[m].len;
|
||||
phys_bytes memaddr = cbi->memmap[m].mm_base_addr,
|
||||
memend = cbi->memmap[m].mm_base_addr + cbi->memmap[m].mm_length;
|
||||
|
||||
/* adjust cut range to be a subset of the free memory */
|
||||
if(substart < memaddr) substart = memaddr;
|
||||
@@ -57,7 +57,7 @@ void cut_memmap(kinfo_t *cbi, phys_bytes start, phys_bytes end)
|
||||
/* if there is any overlap, forget this one and add
|
||||
* 1-2 subranges back
|
||||
*/
|
||||
cbi->memmap[m].addr = cbi->memmap[m].len = 0;
|
||||
cbi->memmap[m].mm_base_addr = cbi->memmap[m].mm_length = 0;
|
||||
if(substart > memaddr)
|
||||
add_memmap(cbi, memaddr, substart-memaddr);
|
||||
if(subend < memend)
|
||||
@@ -91,11 +91,11 @@ void add_memmap(kinfo_t *cbi, u64_t addr, u64_t len)
|
||||
|
||||
for(m = 0; m < MAXMEMMAP; m++) {
|
||||
phys_bytes highmark;
|
||||
if(cbi->memmap[m].len) {
|
||||
if(cbi->memmap[m].mm_length) {
|
||||
continue;
|
||||
}
|
||||
cbi->memmap[m].addr = addr;
|
||||
cbi->memmap[m].len = len;
|
||||
cbi->memmap[m].mm_base_addr = addr;
|
||||
cbi->memmap[m].mm_length = len;
|
||||
cbi->memmap[m].type = MULTIBOOT_MEMORY_AVAILABLE;
|
||||
if(m >= cbi->mmap_size) {
|
||||
cbi->mmap_size = m+1;
|
||||
@@ -136,16 +136,16 @@ phys_bytes pg_alloc_page(kinfo_t *cbi)
|
||||
|
||||
for(m = 0; m < cbi->mmap_size; m++) {
|
||||
mmap = &cbi->memmap[m];
|
||||
if(!mmap->len) {
|
||||
if(!mmap->mm_length) {
|
||||
continue;
|
||||
}
|
||||
assert(mmap->len > 0);
|
||||
assert(!(mmap->len % ARM_PAGE_SIZE));
|
||||
assert(!(mmap->addr % ARM_PAGE_SIZE));
|
||||
assert(mmap->mm_length > 0);
|
||||
assert(!(mmap->mm_length % ARM_PAGE_SIZE));
|
||||
assert(!(mmap->mm_base_addr % ARM_PAGE_SIZE));
|
||||
|
||||
u32_t addr = mmap->addr;
|
||||
mmap->addr += ARM_PAGE_SIZE;
|
||||
mmap->len -= ARM_PAGE_SIZE;
|
||||
u32_t addr = mmap->mm_base_addr;
|
||||
mmap->mm_base_addr += ARM_PAGE_SIZE;
|
||||
mmap->mm_length -= ARM_PAGE_SIZE;
|
||||
|
||||
cbi->kernel_allocated_bytes_dynamic += ARM_PAGE_SIZE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user