summaryrefslogtreecommitdiff
path: root/lib/libkvm
diff options
context:
space:
mode:
authorpk <pk@NetBSD.org>1994-06-10 14:34:58 +0000
committerpk <pk@NetBSD.org>1994-06-10 14:34:58 +0000
commit24c3ce74de5a525c77e6bf9fd3ea28fa0dec1159 (patch)
treee09e07f60ae12ede22f38ccd034eab39554912d5 /lib/libkvm
parent65c532b7a27f4e1589f006437f82afc6b212fb41 (diff)
Changes in pmap structures.
Diffstat (limited to 'lib/libkvm')
-rw-r--r--lib/libkvm/kvm_sparc.c8
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);
/*