version 1.56, 2000/06/19 23:30:36 |
version 1.57, 2000/06/24 04:38:20 |
Line 432 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 432 pmap_bootstrap(kernelstart, kernelend, m |
|
vaddr_t va; |
vaddr_t va; |
u_int64_t phys_msgbuf; |
u_int64_t phys_msgbuf; |
paddr_t newkp; |
paddr_t newkp; |
vaddr_t newkv, firstaddr; |
vaddr_t newkv, firstaddr, intstk; |
vsize_t kdsize, ktsize; |
vsize_t kdsize, ktsize; |
#ifdef DEBUG |
#ifdef DEBUG |
int opmapdebug = pmapdebug; |
int opmapdebug = pmapdebug; |
Line 1070 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1070 pmap_bootstrap(kernelstart, kernelend, m |
|
VM_FREELIST_DEFAULT); |
VM_FREELIST_DEFAULT); |
} |
} |
|
|
|
#if 0 |
/* finally, free up any space that valloc did not use */ |
/* finally, free up any space that valloc did not use */ |
|
prom_unmap_virt((vaddr_t)ekdatap, (kdatap + (4*MEG)) - ekdatap); |
if (ekdatap < (kdatap + (4*MEG))) { |
if (ekdatap < (kdatap + (4*MEG))) { |
uvm_page_physload(atop(ekdatap), atop(kdatap + (4*MEG)), |
uvm_page_physload(atop(ekdatap), atop(kdatap + (4*MEG)), |
atop(ekdatap), atop(kdatap + (4*MEG)), |
atop(ekdatap), atop(kdatap + (4*MEG)), |
VM_FREELIST_DEFAULT); |
VM_FREELIST_DEFAULT); |
} |
} |
|
#endif |
|
|
#ifdef BOOT_DEBUG |
#ifdef BOOT_DEBUG |
/* print out mem list */ |
/* print out mem list */ |
Line 1150 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1153 pmap_bootstrap(kernelstart, kernelend, m |
|
0 /* No ALIAS */, |
0 /* No ALIAS */, |
1 /* valid */, |
1 /* valid */, |
0 /* IE */); |
0 /* IE */); |
data |= TLB_L|TLB_NFO; |
data |= TLB_NFO; |
pmap_enter_kpage(NULL, data); |
pmap_enter_kpage(NULL, data); |
#ifdef BOOT1_DEBUG |
#ifdef BOOT1_DEBUG |
prom_printf("Done inserting mesgbuf into pmap_kernel()\r\n"); |
prom_printf("Done inserting mesgbuf into pmap_kernel()\r\n"); |
Line 1210 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1213 pmap_bootstrap(kernelstart, kernelend, m |
|
|
|
while (vmmap < u0[1]) { |
while (vmmap < u0[1]) { |
int64_t data; |
int64_t data; |
vaddr_t va = (vaddr_t)vmmap; |
|
|
|
pmap_get_page(&pa); |
pmap_get_page(&pa); |
prom_map_phys(pa, NBPG, va, -1); |
prom_map_phys(pa, NBPG, vmmap, -1); |
data = TSB_DATA(0 /* global */, |
data = TSB_DATA(0 /* global */, |
TLB_8K, |
TLB_8K, |
pa, |
pa, |
Line 1223 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1225 pmap_bootstrap(kernelstart, kernelend, m |
|
FORCE_ALIAS /* ALIAS -- Disable D$ */, |
FORCE_ALIAS /* ALIAS -- Disable D$ */, |
1 /* valid */, |
1 /* valid */, |
0 /* IE */); |
0 /* IE */); |
pmap_enter_kpage(va, data); |
pmap_enter_kpage(vmmap, data); |
vmmap += NBPG; |
vmmap += NBPG; |
} |
} |
#ifdef BOOT1_DEBUG |
#ifdef BOOT1_DEBUG |
Line 1234 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1236 pmap_bootstrap(kernelstart, kernelend, m |
|
#ifdef DIAGNOSTIC |
#ifdef DIAGNOSTIC |
vmmap += NBPG; /* redzone -- XXXX do we need one? */ |
vmmap += NBPG; /* redzone -- XXXX do we need one? */ |
#endif |
#endif |
if ((vmmap ^ CPUINFO_VA) & VA_ALIAS_MASK) |
if ((vmmap ^ INTSTACK) & VA_ALIAS_MASK) |
vmmap += NBPG; /* Matchup virtual color for D$ */ |
vmmap += NBPG; /* Matchup virtual color for D$ */ |
cpus = (struct cpu_info *)vmmap; |
intstk = vmmap; |
|
cpus = (struct cpu_info *)(vmmap+EINTSTACK-INTSTACK); |
|
|
#ifdef BOOT1_DEBUG |
#ifdef BOOT1_DEBUG |
prom_printf("Inserting cpu_info into pmap_kernel() at %p\r\n", cpus); |
prom_printf("Inserting cpu_info into pmap_kernel() at %p\r\n", cpus); |
Line 1245 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1248 pmap_bootstrap(kernelstart, kernelend, m |
|
pa = cpu0paddr; |
pa = cpu0paddr; |
for (i=0; i<8; i++) { |
for (i=0; i<8; i++) { |
int64_t data; |
int64_t data; |
vaddr_t va = (vaddr_t)vmmap; |
|
|
|
prom_map_phys(pa, NBPG, va, -1); |
prom_map_phys(pa, NBPG, vmmap, -1); |
data = TSB_DATA(0 /* global */, |
data = TSB_DATA(0 /* global */, |
TLB_8K, |
TLB_8K, |
pa, |
pa, |
Line 1257 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1259 pmap_bootstrap(kernelstart, kernelend, m |
|
FORCE_ALIAS /* ALIAS -- Disable D$ */, |
FORCE_ALIAS /* ALIAS -- Disable D$ */, |
1 /* valid */, |
1 /* valid */, |
0 /* IE */); |
0 /* IE */); |
pmap_enter_kpage(va, data); |
pmap_enter_kpage(vmmap, data); |
vmmap += NBPG; |
vmmap += NBPG; |
pa += NBPG; |
pa += NBPG; |
} |
} |
Line 1266 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1268 pmap_bootstrap(kernelstart, kernelend, m |
|
#endif |
#endif |
|
|
/* Initialize our cpu_info structure */ |
/* Initialize our cpu_info structure */ |
bzero(cpus, 8*NBPG); |
bzero(intstk, 8*NBPG); |
cpus->ci_next = NULL; /* Redundant, I know. */ |
cpus->ci_next = NULL; /* Redundant, I know. */ |
cpus->ci_curproc = &proc0; |
cpus->ci_curproc = &proc0; |
cpus->ci_cpcb = (struct pcb *)u0[0]; /* Need better source */ |
cpus->ci_cpcb = (struct pcb *)u0[0]; /* Need better source */ |
Line 1304 pmap_bootstrap(kernelstart, kernelend, m |
|
Line 1306 pmap_bootstrap(kernelstart, kernelend, m |
|
void |
void |
pmap_init() |
pmap_init() |
{ |
{ |
u_int64_t pagesize; |
|
u_int64_t pte; |
|
vm_page_t m; |
vm_page_t m; |
paddr_t pa; |
paddr_t pa; |
psize_t size; |
psize_t size; |