Author: mjg
Date: Sun Jul 31 11:34:08 2016
New Revision: 303583
URL: https://svnweb.freebsd.org/changeset/base/303583

Log:
  amd64: implement pagezero using rep stos
  
  The current implementation uses non-temporal writes. This turns out to
  be detrimental to performance if the page is used shortly after, which
  is the typical case with page faults.
  
  Switch to rep stos.
  
  Reviewed by:  kib
  MFC after:    1 week

Modified:
  head/sys/amd64/amd64/support.S

Modified: head/sys/amd64/amd64/support.S
==============================================================================
--- head/sys/amd64/amd64/support.S      Sun Jul 31 10:37:09 2016        
(r303582)
+++ head/sys/amd64/amd64/support.S      Sun Jul 31 11:34:08 2016        
(r303583)
@@ -64,17 +64,10 @@ END(bzero)
 /* Address: %rdi */
 ENTRY(pagezero)
        PUSH_FRAME_POINTER
-       movq    $-PAGE_SIZE,%rdx
-       subq    %rdx,%rdi
+       movq    $PAGE_SIZE/8,%rcx
        xorl    %eax,%eax
-1:
-       movnti  %rax,(%rdi,%rdx)
-       movnti  %rax,8(%rdi,%rdx)
-       movnti  %rax,16(%rdi,%rdx)
-       movnti  %rax,24(%rdi,%rdx)
-       addq    $32,%rdx
-       jne     1b
-       sfence
+       rep
+       stosq
        POP_FRAME_POINTER
        ret
 END(pagezero)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to