kernel -- Remove i686_pagezero.
authorVenkatesh Srinivas <me@endeavour.zapto.org>
Sat, 10 Dec 2011 06:32:10 +0000 (22:32 -0800)
committerVenkatesh Srinivas <me@endeavour.zapto.org>
Sat, 10 Dec 2011 06:32:10 +0000 (22:32 -0800)
i686_pagezero spent read bandwidth to search for the first non-zero word
in a page and zeroed from there. This was silly; the contents of the page
didn't matter and reading it was a waste of time. bzero() is used directly.

sys/platform/pc32/i386/bzero.s
sys/platform/pc32/i386/pmap.c
sys/platform/pc32/include/md_var.h

index 9f06fe6..48de8af 100644 (file)
@@ -87,53 +87,3 @@ ENTRY(bzero)
        popl    %edi
        ret
 
-ENTRY(i686_pagezero)
-       pushl   %edi
-       pushl   %ebx
-
-       movl    12(%esp), %edi
-       movl    $1024, %ecx
-       cld
-
-       ALIGN_TEXT
-1:
-       xorl    %eax, %eax
-       repe
-       scasl   
-       jnz     2f
-
-       popl    %ebx
-       popl    %edi
-       ret
-
-       ALIGN_TEXT
-
-2:
-       incl    %ecx
-       subl    $4, %edi
-
-       movl    %ecx, %edx
-       cmpl    $16, %ecx
-
-       jge     3f
-
-       movl    %edi, %ebx
-       andl    $0x3f, %ebx
-       shrl    %ebx
-       shrl    %ebx
-       movl    $16, %ecx
-       subl    %ebx, %ecx
-
-3:
-       subl    %ecx, %edx
-       rep
-       stosl
-
-       movl    %edx, %ecx
-       testl   %edx, %edx
-       jnz     1b
-
-       popl    %ebx
-       popl    %edi
-       ret
-
index 841b068..24c3c21 100644 (file)
@@ -2691,13 +2691,7 @@ pmap_zero_page(vm_paddr_t phys)
        *(int *)gd->gd_CMAP3 =
                    PG_V | PG_RW | (phys & PG_FRAME) | PG_A | PG_M;
        cpu_invlpg(gd->gd_CADDR3);
-
-#if defined(I686_CPU)
-       if (cpu_class == CPUCLASS_686)
-               i686_pagezero(gd->gd_CADDR3);
-       else
-#endif
-               bzero(gd->gd_CADDR3, PAGE_SIZE);
+       bzero(gd->gd_CADDR3, PAGE_SIZE);
        *(int *) gd->gd_CMAP3 = 0;
        crit_exit();
 }
@@ -2747,13 +2741,7 @@ pmap_zero_page_area(vm_paddr_t phys, int off, int size)
                panic("pmap_zero_page: CMAP3 busy");
        *(int *) gd->gd_CMAP3 = PG_V | PG_RW | (phys & PG_FRAME) | PG_A | PG_M;
        cpu_invlpg(gd->gd_CADDR3);
-
-#if defined(I686_CPU)
-       if (cpu_class == CPUCLASS_686 && off == 0 && size == PAGE_SIZE)
-               i686_pagezero(gd->gd_CADDR3);
-       else
-#endif
-               bzero((char *)gd->gd_CADDR3 + off, size);
+       bzero((char *)gd->gd_CADDR3 + off, size);
        *(int *) gd->gd_CMAP3 = 0;
        crit_exit();
 }
index ab6fc2f..1f6adda 100644 (file)
@@ -123,7 +123,6 @@ void        asm_xmm_memcpy(void);
 void   asm_generic_bcopy(void);
 void   asm_mmx_bcopy(void);
 void   asm_xmm_bcopy(void);
-void   i686_pagezero (void *addr);
 void   init_AMD_Elan_sc520(void);
 void   setidt (int idx, alias_for_inthand_t *func, int typ, int dpl,
                    int selec);