mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 2f79555097
			
		
	
	
		2f79555097
		
	
	
	
	
		
			
			Impact: cleanup Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* ----------------------------------------------------------------------- *
 | |
|  *
 | |
|  *   Copyright (C) 1991, 1992 Linus Torvalds
 | |
|  *   Copyright 2007 rPath, Inc. - All Rights Reserved
 | |
|  *
 | |
|  *   This file is part of the Linux kernel, and is made available under
 | |
|  *   the terms of the GNU General Public License version 2.
 | |
|  *
 | |
|  * ----------------------------------------------------------------------- */
 | |
| 
 | |
| #include <linux/linkage.h>
 | |
| 
 | |
| /*
 | |
|  * Memory copy routines
 | |
|  */
 | |
| 
 | |
| 	.code16gcc
 | |
| 	.text
 | |
| 
 | |
| GLOBAL(memcpy)
 | |
| 	pushw	%si
 | |
| 	pushw	%di
 | |
| 	movw	%ax, %di
 | |
| 	movw	%dx, %si
 | |
| 	pushw	%cx
 | |
| 	shrw	$2, %cx
 | |
| 	rep; movsl
 | |
| 	popw	%cx
 | |
| 	andw	$3, %cx
 | |
| 	rep; movsb
 | |
| 	popw	%di
 | |
| 	popw	%si
 | |
| 	ret
 | |
| ENDPROC(memcpy)
 | |
| 
 | |
| GLOBAL(memset)
 | |
| 	pushw	%di
 | |
| 	movw	%ax, %di
 | |
| 	movzbl	%dl, %eax
 | |
| 	imull	$0x01010101,%eax
 | |
| 	pushw	%cx
 | |
| 	shrw	$2, %cx
 | |
| 	rep; stosl
 | |
| 	popw	%cx
 | |
| 	andw	$3, %cx
 | |
| 	rep; stosb
 | |
| 	popw	%di
 | |
| 	ret
 | |
| ENDPROC(memset)
 | |
| 
 | |
| GLOBAL(copy_from_fs)
 | |
| 	pushw	%ds
 | |
| 	pushw	%fs
 | |
| 	popw	%ds
 | |
| 	call	memcpy
 | |
| 	popw	%ds
 | |
| 	ret
 | |
| ENDPROC(copy_from_fs)
 | |
| 
 | |
| GLOBAL(copy_to_fs)
 | |
| 	pushw	%es
 | |
| 	pushw	%fs
 | |
| 	popw	%es
 | |
| 	call	memcpy
 | |
| 	popw	%es
 | |
| 	ret
 | |
| ENDPROC(copy_to_fs)
 | |
| 
 | |
| #if 0 /* Not currently used, but can be enabled as needed */
 | |
| GLOBAL(copy_from_gs)
 | |
| 	pushw	%ds
 | |
| 	pushw	%gs
 | |
| 	popw	%ds
 | |
| 	call	memcpy
 | |
| 	popw	%ds
 | |
| 	ret
 | |
| ENDPROC(copy_from_gs)
 | |
| 
 | |
| GLOBAL(copy_to_gs)
 | |
| 	pushw	%es
 | |
| 	pushw	%gs
 | |
| 	popw	%es
 | |
| 	call	memcpy
 | |
| 	popw	%es
 | |
| 	ret
 | |
| ENDPROC(copy_to_gs)
 | |
| #endif
 |