diff options
Diffstat (limited to 'arch/sparc/lib/NG4clear_page.S')
| -rw-r--r-- | arch/sparc/lib/NG4clear_page.S | 29 | 
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/sparc/lib/NG4clear_page.S b/arch/sparc/lib/NG4clear_page.S new file mode 100644 index 00000000000..e16c88204a4 --- /dev/null +++ b/arch/sparc/lib/NG4clear_page.S @@ -0,0 +1,29 @@ +/* NG4copy_page.S: Niagara-4 optimized clear page. + * + * Copyright (C) 2012 (davem@davemloft.net) + */ + +#include <asm/asi.h> +#include <asm/page.h> + +	.text + +	.register	%g3, #scratch + +	.align		32 +	.globl		NG4clear_page +	.globl		NG4clear_user_page +NG4clear_page:		/* %o0=dest */ +NG4clear_user_page:	/* %o0=dest, %o1=vaddr */ +	set		PAGE_SIZE, %g7 +	mov		0x20, %g3 +1:	stxa		%g0, [%o0 + %g0] ASI_ST_BLKINIT_MRU_P +	subcc		%g7, 0x40, %g7 +	stxa		%g0, [%o0 + %g3] ASI_ST_BLKINIT_MRU_P +	bne,pt		%xcc, 1b +	 add		%o0, 0x40, %o0 +	membar		#StoreLoad|#StoreStore +	retl +	 nop +	.size		NG4clear_page,.-NG4clear_page +	.size		NG4clear_user_page,.-NG4clear_user_page
\ No newline at end of file  | 
