summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2015-04-08 14:02:44 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2015-04-08 14:02:44 +0000
commitcbc63be31bad57e611cbdb51f7780b639f30bc30 (patch)
treec62c24c9d10f47a1b163aee88f2cfaa8e7c57b8d /sys/arch
parent16ed0eaaac2ed5a9fdd7945614af3a59d35e21b7 (diff)
I believe UVM is clean now and no managed pages should be in use anymore
when we call pmap_release(). Turn debug code into printf and remove the code that tried to mop up. Override Debugger() such that it inserts a trap instruction directly into the code such that we get useful backtraces. This way I don't need to worry about pmap_release() removing pv entries when making this pmap mpsafe.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/sparc64/sparc64/pmap.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/sys/arch/sparc64/sparc64/pmap.c b/sys/arch/sparc64/sparc64/pmap.c
index e657af8aeca..9a15512683f 100644
--- a/sys/arch/sparc64/sparc64/pmap.c
+++ b/sys/arch/sparc64/sparc64/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.88 2015/02/15 21:34:33 miod Exp $ */
+/* $OpenBSD: pmap.c,v 1.89 2015/04/08 14:02:43 kettenis Exp $ */
/* $NetBSD: pmap.c,v 1.107 2001/08/31 16:47:41 eeh Exp $ */
#undef NO_VCACHE /* Don't forget the locked TLB in dostart */
/*
@@ -58,6 +58,7 @@
#include <ddb/db_extern.h>
#include <ddb/db_access.h>
#include <ddb/db_output.h>
+#define Debugger() __asm volatile("ta 1; nop");
#else
#define Debugger()
#define db_printf printf
@@ -1522,18 +1523,9 @@ pmap_release(struct pmap *pm)
pa = data & TLB_PA_MASK;
pv = pa_to_pvh(pa);
if (pv != NULL) {
-
-#ifdef DEBUG
printf("pmap_release: pm=%p page %llx still in use\n", pm,
(unsigned long long)(((u_int64_t)i<<STSHIFT)|((u_int64_t)k<<PDSHIFT)|((u_int64_t)j<<PTSHIFT)));
Debugger();
-#endif
- /* Save REF/MOD info */
- pv->pv_va |= pmap_tte2flags(data);
-
- pmap_remove_pv(pm,
- (long)((u_int64_t)i<<STSHIFT)|((long)k<<PDSHIFT)|((long)j<<PTSHIFT),
- pa);
}
}
stxa(pdirentp, ASI_PHYS_CACHED, 0);