aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2002-07-13 21:03:08 +0000
committerPeter Wemm <peter@FreeBSD.org>2002-07-13 21:03:08 +0000
commit96fd5002b4900658e25a955bb80dc84d36f0b7f5 (patch)
treeb75079c303af489318e02d275706e34ba4e5a10a /sys
parent006490441ddaf7a2f172e0fc0f67f567621e70ae (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c13
-rw-r--r--sys/i386/i386/pmap.c13
2 files changed, 24 insertions, 2 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 2d00a12270f9..2c76ef0d4a3c 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -2724,10 +2724,14 @@ pmap_zero_page(vm_page_t m)
if (*CMAP2)
panic("pmap_zero_page: CMAP2 busy");
*CMAP2 = PG_V | PG_RW | phys | PG_A | PG_M;
+#ifdef I386_CPU
+ invltlb();
+#else
#ifdef SMP
curthread->td_switchin = pmap_zpi_switchin2;
#endif
invlpg((u_int)CADDR2);
+#endif
#if defined(I686_CPU)
if (cpu_class == CPUCLASS_686)
i686_pagezero(CADDR2);
@@ -2755,10 +2759,14 @@ pmap_zero_page_area(vm_page_t m, int off, int size)
if (*CMAP2)
panic("pmap_zero_page: CMAP2 busy");
*CMAP2 = PG_V | PG_RW | phys | PG_A | PG_M;
+#ifdef I386_CPU
+ invltlb();
+#else
#ifdef SMP
curthread->td_switchin = pmap_zpi_switchin2;
#endif
invlpg((u_int)CADDR2);
+#endif
#if defined(I686_CPU)
if (cpu_class == CPUCLASS_686 && off == 0 && size == PAGE_SIZE)
i686_pagezero(CADDR2);
@@ -2786,10 +2794,14 @@ pmap_zero_page_idle(vm_page_t m)
if (*CMAP3)
panic("pmap_zero_page: CMAP3 busy");
*CMAP3 = PG_V | PG_RW | phys | PG_A | PG_M;
+#ifdef I386_CPU
+ invltlb();
+#else
#ifdef SMP
curthread->td_switchin = pmap_zpi_switchin3;
#endif
invlpg((u_int)CADDR3);
+#endif
#if defined(I686_CPU)
if (cpu_class == CPUCLASS_686)
i686_pagezero(CADDR3);
@@ -2828,7 +2840,6 @@ pmap_copy_page(vm_page_t src, vm_page_t dst)
invlpg((u_int)CADDR2);
#endif
bcopy(CADDR1, CADDR2, PAGE_SIZE);
-
#ifdef SMP
curthread->td_switchin = NULL;
#endif
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 2d00a12270f9..2c76ef0d4a3c 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -2724,10 +2724,14 @@ pmap_zero_page(vm_page_t m)
if (*CMAP2)
panic("pmap_zero_page: CMAP2 busy");
*CMAP2 = PG_V | PG_RW | phys | PG_A | PG_M;
+#ifdef I386_CPU
+ invltlb();
+#else
#ifdef SMP
curthread->td_switchin = pmap_zpi_switchin2;
#endif
invlpg((u_int)CADDR2);
+#endif
#if defined(I686_CPU)
if (cpu_class == CPUCLASS_686)
i686_pagezero(CADDR2);
@@ -2755,10 +2759,14 @@ pmap_zero_page_area(vm_page_t m, int off, int size)
if (*CMAP2)
panic("pmap_zero_page: CMAP2 busy");
*CMAP2 = PG_V | PG_RW | phys | PG_A | PG_M;
+#ifdef I386_CPU
+ invltlb();
+#else
#ifdef SMP
curthread->td_switchin = pmap_zpi_switchin2;
#endif
invlpg((u_int)CADDR2);
+#endif
#if defined(I686_CPU)
if (cpu_class == CPUCLASS_686 && off == 0 && size == PAGE_SIZE)
i686_pagezero(CADDR2);
@@ -2786,10 +2794,14 @@ pmap_zero_page_idle(vm_page_t m)
if (*CMAP3)
panic("pmap_zero_page: CMAP3 busy");
*CMAP3 = PG_V | PG_RW | phys | PG_A | PG_M;
+#ifdef I386_CPU
+ invltlb();
+#else
#ifdef SMP
curthread->td_switchin = pmap_zpi_switchin3;
#endif
invlpg((u_int)CADDR3);
+#endif
#if defined(I686_CPU)
if (cpu_class == CPUCLASS_686)
i686_pagezero(CADDR3);
@@ -2828,7 +2840,6 @@ pmap_copy_page(vm_page_t src, vm_page_t dst)
invlpg((u_int)CADDR2);
#endif
bcopy(CADDR1, CADDR2, PAGE_SIZE);
-
#ifdef SMP
curthread->td_switchin = NULL;
#endif