diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 70d6406f1210..5ea2c8b40e0e 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -251,6 +251,10 @@ SYSCTL_INT(_debug, OID_AUTO, PMAP1unchanged, CTLFLAG_RD, "Number of times pmap_pte_quick didn't change PMAP1"); static struct mtx PMAP2mutex; +static int pagezero_style = 2; +SYSCTL_INT(_debug, OID_AUTO, pagezero_style, CTLFLAG_RW, + &pagezero_style, 0, ""); + static PMAP_INLINE void free_pv_entry(pv_entry_t pv); static pv_entry_t get_pv_entry(void); static void pmap_clear_ptes(vm_page_t m, int bit); @@ -2577,17 +2581,18 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len, static __inline void pagezero(void *page) { -#if defined(I686_CPU) - if (cpu_class == CPUCLASS_686) { -#if defined(CPU_ENABLE_SSE) - if (cpu_feature & CPUID_SSE2) - sse2_pagezero(page); - else -#endif - i686_pagezero(page); - } else -#endif + switch (pagezero_style) { + case 0: + sse2_pagezero(page); + break; + case 1: + i686_pagezero(page); + break; + case 2: + default: bzero(page, PAGE_SIZE); + break; + } } /*