29 lines
		
	
	
	
		
			560 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
	
		
			560 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | /* | ||
|  |  * Copyright (C) 2004-2006 Atmel Corporation | ||
|  |  * | ||
|  |  * This program is free software; you can redistribute it and/or modify
 | ||
|  |  * it under the terms of the GNU General Public License version 2 as | ||
|  |  * published by the Free Software Foundation. | ||
|  |  */ | ||
|  | #include <linux/linkage.h> | ||
|  | #include <asm/page.h> | ||
|  | 
 | ||
|  | /* | ||
|  |  * copy_page | ||
|  |  * | ||
|  |  * r12		to (P1 address) | ||
|  |  * r11		from (P1 address) | ||
|  |  * r8-r10	scratch | ||
|  |  */ | ||
|  | 	.text | ||
|  | 	.global copy_page
 | ||
|  | copy_page: | ||
|  | 	sub	r10, r11, -(1 << PAGE_SHIFT) | ||
|  | 	/* pref	r11[0] */ | ||
|  | 1:	/* pref	r11[8] */ | ||
|  | 	ld.d	r8, r11++ | ||
|  | 	st.d	r12++, r8 | ||
|  | 	cp	r11, r10 | ||
|  | 	brlo	1b | ||
|  | 	mov	pc, lr |