26 |
#include "vm-map.h" |
#include "vm-map.h" |
27 |
#include "vm-kmem.h" |
#include "vm-kmem.h" |
28 |
#include "trace.h" |
#include "trace.h" |
29 |
|
#include "bootstrap.h" |
30 |
|
|
31 |
#include "i386-pmap.h" |
#include "i386-pmap.h" |
32 |
#include "i386-regs.h" |
#include "i386-regs.h" |
123 |
pmap_bootstrap (vm_offset_t kernel_start, vm_offset_t kernel_end) |
pmap_bootstrap (vm_offset_t kernel_start, vm_offset_t kernel_end) |
124 |
{ |
{ |
125 |
extern struct multiboot_info *cpu_multiboot_ptr; /* from -start.S */ |
extern struct multiboot_info *cpu_multiboot_ptr; /* from -start.S */ |
126 |
vm_size_t memory_top; |
vm_size_t memory_top, memory_start; |
127 |
int npages; |
int npages, i; |
128 |
|
|
129 |
/* Add lower physical memory. */ |
/* Add lower physical memory. */ |
130 |
|
|
131 |
vm_page_load (0x1000, vm_trunc_page (kernel_start), |
vm_page_load (0x1000, vm_trunc_page (kernel_start), |
132 |
0x1000, vm_trunc_page (kernel_start)); |
0x1000, vm_trunc_page (kernel_start)); |
133 |
|
|
134 |
/* Add upper physical memory. */ |
/* Add upper physical memory (excluding modules) */ |
135 |
|
|
136 |
memory_top = ((vm_size_t) cpu_multiboot_ptr->mem_upper) * 1024; |
memory_top = ((vm_size_t) cpu_multiboot_ptr->mem_upper) * 1024; |
137 |
vm_page_load (vm_round_page (kernel_end), vm_trunc_page (memory_top), |
for (i = 0, memory_start = vm_round_page (kernel_end); i < bootstrap_count; i++) |
138 |
vm_round_page (kernel_end), vm_trunc_page (memory_top)); |
{ |
139 |
|
struct bootstrap *module = & bootstrap_modules [i]; |
140 |
|
|
141 |
|
if (memory_start != vm_trunc_page (module->offset)) |
142 |
|
{ |
143 |
|
vm_page_load (memory_start, vm_trunc_page (module->offset), |
144 |
|
memory_start, vm_trunc_page (module->offset)); |
145 |
|
memory_start = vm_round_page (module->offset + module->size); |
146 |
|
} |
147 |
|
} |
148 |
|
|
149 |
|
vm_page_load (memory_start, vm_trunc_page (memory_top), |
150 |
|
memory_start, vm_trunc_page (memory_top)); |
151 |
|
|
152 |
|
|
153 |
/* Set virtual address space limits. */ |
/* Set virtual address space limits. */ |
154 |
|
|