pc: modify cpu0 page tables in patwc() instead of current cpu ones
on 386 kernel, each processor has its own pdb where the primary pdb for kernel mappings is on cpu0 and other cpu's lazily pull pdb entries from cpu0 when they fault in vmapsync(). so we have to edit the table tables in the pdb of cpu0 and not the current processor.
This commit is contained in:
parent
ea30cf94a5
commit
2830cd7eb6
1 changed files with 2 additions and 2 deletions
|
@ -1097,12 +1097,12 @@ patwc(void *a, int n)
|
|||
|
||||
/* set the bits for all pages in range */
|
||||
for(va = (ulong)a; n > 0; n -= z, va += z){
|
||||
pte = mmuwalk(m->pdb, va, 1, 0);
|
||||
pte = mmuwalk(MACHP(0)->pdb, va, 1, 0);
|
||||
if(pte && (*pte & (PTEVALID|PTESIZE)) == (PTEVALID|PTESIZE)){
|
||||
z = 4*MB - (va & (4*MB-1));
|
||||
mask = 3<<3 | 1<<12;
|
||||
} else {
|
||||
pte = mmuwalk(m->pdb, va, 2, 0);
|
||||
pte = mmuwalk(MACHP(0)->pdb, va, 2, 0);
|
||||
if(pte == 0 || (*pte & PTEVALID) == 0)
|
||||
panic("patwc: va=%#p", va);
|
||||
z = BY2PG - (va & (BY2PG-1));
|
||||
|
|
Loading…
Reference in a new issue