diff options
| author | pk <pk@NetBSD.org> | 1994-06-10 14:34:58 +0000 |
|---|---|---|
| committer | pk <pk@NetBSD.org> | 1994-06-10 14:34:58 +0000 |
| commit | 24c3ce74de5a525c77e6bf9fd3ea28fa0dec1159 (patch) | |
| tree | e09e07f60ae12ede22f38ccd034eab39554912d5 /lib/libkvm | |
| parent | 65c532b7a27f4e1589f006437f82afc6b212fb41 (diff) | |
Changes in pmap structures.
Diffstat (limited to 'lib/libkvm')
| -rw-r--r-- | lib/libkvm/kvm_sparc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/libkvm/kvm_sparc.c b/lib/libkvm/kvm_sparc.c index 5275068b6ea..6476a3ae8a8 100644 --- a/lib/libkvm/kvm_sparc.c +++ b/lib/libkvm/kvm_sparc.c @@ -166,6 +166,7 @@ _kvm_uvatop(kd, p, va, pa) int kva, pte; register int off, frame; register struct vmspace *vms = p->p_vmspace; + struct usegmap *usp; if ((u_long)vms < KERNBASE) { _kvm_err(kd, kd->program, "_kvm_uvatop: corrupt proc"); @@ -179,10 +180,13 @@ _kvm_uvatop(kd, p, va, pa) * Note that the index pte table is indexed by * virtual segment rather than physical segment. */ - kva = (u_long)&vms->vm_pmap.pm_rpte[VA_VSEG(va)]; + kva = (u_long)&vms->vm_pmap.pm_segstore; + if (kvm_read(kd, kva, (char *)&usp, 4) != 4) + goto invalid; + kva = (u_long)&usp->us_pte[VA_VSEG(va)]; if (kvm_read(kd, kva, (char *)&kva, 4) != 4 || kva == 0) goto invalid; - kva += sizeof(vms->vm_pmap.pm_rpte[0]) * VA_VPG(va); + kva += sizeof(usp->us_pte[0]) * VA_VPG(va); if (kvm_read(kd, kva, (char *)&pte, 4) == 4 && (pte & PG_V)) { off = VA_OFF(va); /* |
