git: d1de5698dfe6 - main - amd64: retire sse2_pagezero

Mateusz Guzik mjg at FreeBSD.org
Sat Jan 30 00:22:37 UTC 2021


The branch main has been updated by mjg:

URL: https://cgit.FreeBSD.org/src/commit/?id=d1de5698dfe6109308d4e5d6536a2ac93941d23a

commit d1de5698dfe6109308d4e5d6536a2ac93941d23a
Author:     Mateusz Guzik <mjg at FreeBSD.org>
AuthorDate: 2021-01-30 00:17:15 +0000
Commit:     Mateusz Guzik <mjg at FreeBSD.org>
CommitDate: 2021-01-30 00:17:15 +0000

    amd64: retire sse2_pagezero
    
    All page zeroing is using temporal stores with rep movs*, the routine is
    unused for several years.
    
    Should a need arise for zeroing using non-temporal stores, a more
    optimized variant can be implemented with a more descriptive name.
---
 sys/amd64/amd64/support.S  | 24 ------------------------
 sys/amd64/include/md_var.h |  1 -
 2 files changed, 25 deletions(-)

diff --git a/sys/amd64/amd64/support.S b/sys/amd64/amd64/support.S
index 35e73e413e87..49baa50ac294 100644
--- a/sys/amd64/amd64/support.S
+++ b/sys/amd64/amd64/support.S
@@ -81,30 +81,6 @@ ENTRY(pagecopy)
 	ret
 END(pagecopy)
 
-/* Address: %rdi */
-ENTRY(sse2_pagezero)
-	PUSH_FRAME_POINTER
-	movq	$-PAGE_SIZE,%rdx
-	subq	%rdx,%rdi
-	xorl	%eax,%eax
-	jmp	1f
-	/*
-	 * The loop takes 29 bytes.  Ensure that it doesn't cross a 32-byte
-	 * cache line.
-	 */
-	.p2align 5,0x90
-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
-	POP_FRAME_POINTER
-	ret
-END(sse2_pagezero)
-
 /*
  * memcmpy(b1, b2, len)
  *	   rdi,rsi,rdx
diff --git a/sys/amd64/include/md_var.h b/sys/amd64/include/md_var.h
index 6b6201e4c0f1..3b2454a4b441 100644
--- a/sys/amd64/include/md_var.h
+++ b/sys/amd64/include/md_var.h
@@ -85,7 +85,6 @@ void	gsbase_load_fault(void) __asm(__STRING(gsbase_load_fault));
 void	fpstate_drop(struct thread *td);
 void	pagezero(void *addr);
 void	setidt(int idx, alias_for_inthand_t *func, int typ, int dpl, int ist);
-void	sse2_pagezero(void *addr);
 void	set_top_of_stack_td(struct thread *td);
 struct savefpu *get_pcb_user_save_td(struct thread *td);
 struct savefpu *get_pcb_user_save_pcb(struct pcb *pcb);


More information about the dev-commits-src-all mailing list