29 lines
		
	
	
	
		
			642 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
	
		
			642 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | /* 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 |