svn commit: r310975 - stable/10/sys/amd64/amd64
Mateusz Guzik
mjg at FreeBSD.org
Sat Dec 31 13:23:29 UTC 2016
Author: mjg
Date: Sat Dec 31 13:23:28 2016
New Revision: 310975
URL: https://svnweb.freebsd.org/changeset/base/310975
Log:
MFC r303583:
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.
Modified:
stable/10/sys/amd64/amd64/support.S
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/amd64/amd64/support.S
==============================================================================
--- stable/10/sys/amd64/amd64/support.S Sat Dec 31 13:15:52 2016 (r310974)
+++ stable/10/sys/amd64/amd64/support.S Sat Dec 31 13:23:28 2016 (r310975)
@@ -65,17 +65,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)
More information about the svn-src-all
mailing list