summaryrefslogtreecommitdiff
path: root/sys/arch/amd64/include/pmap.h
diff options
context:
space:
mode:
authorPhilip Guenthe <guenther@cvs.openbsd.org>2009-06-06 23:45:37 +0000
committerPhilip Guenthe <guenther@cvs.openbsd.org>2009-06-06 23:45:37 +0000
commit607b546d377ba7a0e5f3fadc5fd881da89586906 (patch)
tree754b0ae3b4b6291e8f71428f94dfac1d2fa48c70 /sys/arch/amd64/include/pmap.h
parentc26bc5bfd3f3cdd7eb49c47edc6e7bf88684cc7d (diff)
Unrevert the curpmap change with the addition of correct %gs handling
in the IPI handler so that it works when it interrupts userspace, waiting for the droppmap IPI to complete when destroying it, and (most importantly) don't call pmap_tlb_droppmap() from cpu_exit(). Tested by myself and ckuethe, as our machines choked on the original. ok @art
Diffstat (limited to 'sys/arch/amd64/include/pmap.h')
-rw-r--r--sys/arch/amd64/include/pmap.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/arch/amd64/include/pmap.h b/sys/arch/amd64/include/pmap.h
index 939228b9bec..750f342a0a0 100644
--- a/sys/arch/amd64/include/pmap.h
+++ b/sys/arch/amd64/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.25 2009/06/05 10:51:45 guenther Exp $ */
+/* $OpenBSD: pmap.h,v 1.26 2009/06/06 23:45:36 guenther Exp $ */
/* $NetBSD: pmap.h,v 1.1 2003/04/26 18:39:46 fvdl Exp $ */
/*
@@ -325,7 +325,6 @@ struct pmap {
union descriptor *pm_ldt; /* user-set LDT */
int pm_ldt_len; /* number of LDT entries */
int pm_ldt_sel; /* LDT selector */
- u_int32_t pm_cpus; /* mask of CPUs using pmap */
};
/*
@@ -416,6 +415,8 @@ static void pmap_update_pg(vaddr_t);
static void pmap_update_2pg(vaddr_t,vaddr_t);
void pmap_write_protect(struct pmap *, vaddr_t,
vaddr_t, vm_prot_t);
+void pmap_switch(struct proc *, struct proc *);
+
vaddr_t reserve_dumppages(vaddr_t); /* XXX: not a pmap fn */
@@ -423,8 +424,10 @@ void pmap_tlb_shootpage(struct pmap *, vaddr_t);
void pmap_tlb_shootrange(struct pmap *, vaddr_t, vaddr_t);
void pmap_tlb_shoottlb(void);
#ifdef MULTIPROCESSOR
+void pmap_tlb_droppmap(struct pmap *);
void pmap_tlb_shootwait(void);
#else
+#define pmap_tlb_droppmap(pm)
#define pmap_tlb_shootwait()
#endif