109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| /* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/SlowBcopy.S,v 1.1 1999/07/10 07:24:51 dawes Exp $ */
 | |
| /*******************************************************************************
 | |
|                         Copyright 1994 by Glenn G. Lai
 | |
| 
 | |
|                         All Rights Reserved
 | |
| 
 | |
| Permission to use, copy, modify, and distribute this software and its
 | |
| documentation for any purpose and without fee is hereby granted,
 | |
| provided that the above copyr notice appear in all copies and that
 | |
| both that copyr notice and this permission notice appear in
 | |
| supporting documentation, and that the name of Glenn G. Lai not be
 | |
| used in advertising or publicity pertaining to distribution of the
 | |
| software without specific, written prior permission.
 | |
| 
 | |
| Glenn G. Lai DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 | |
| ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
 | |
| DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
 | |
| ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | |
| WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | |
| ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | |
| SOFTWARE.
 | |
| 
 | |
| Glenn G. Lai
 | |
| P.O. Box 4314
 | |
| Austin, Tx 78765
 | |
| glenn@cs.utexas.edu)
 | |
| 7/21/94
 | |
| *******************************************************************************/
 | |
| /* $XConsortium: SlowBcopy.s /main/4 1996/02/21 17:40:52 kaleb $ */
 | |
|  
 | |
| /* 
 | |
|  *   Modified from the output generated by GCC
 | |
|  *
 | |
|  *   Create a dependency that should be immune from the effect of register
 | |
|  *   renaming as is commonly seen in superscalar processors.  This should
 | |
|  *   insert a minimum of 100-ns delays between reads/writes at clock rates
 | |
|  *   up to 100 MHz---GGL
 | |
|  *   
 | |
|  *   Slowbcopy(char *src, char *dst, int count)   
 | |
|  *   
 | |
|  */ 
 | |
| 
 | |
| #include "assyntax.h"
 | |
| 
 | |
| 	FILE("SlowBcopy.s")
 | |
| 
 | |
| 	AS_BEGIN
 | |
| 
 | |
| gcc2_compiled.:
 | |
| ___gnu_compiled_c:
 | |
| 
 | |
| 	GLOBL	GLNAME(xf86SlowBcopy)
 | |
| 
 | |
| 	SEG_TEXT
 | |
| 	ALIGNTEXT4
 | |
| GLNAME(xf86SlowBcopy):
 | |
| 	PUSH_L	(EBP)
 | |
| 	MOV_L	(ESP,EBP)
 | |
| 	PUSH_L	(ESI)
 | |
| 	PUSH_L	(EBX)
 | |
| 	MOV_L	(REGOFF(8,EBP),ECX)
 | |
| 	MOV_L	(REGOFF(12,EBP),EDX)
 | |
| 	MOV_L	(REGOFF(16,EBP),ESI)
 | |
| 	XOR_L	(EAX,EAX)
 | |
| 	CMP_L	(ESI,EAX)
 | |
| 	JGE	(L3)
 | |
| 
 | |
| 	ALIGNTEXT4
 | |
| L5:
 | |
| 	MOV_B	(REGIND(ECX),BL)
 | |
| 
 | |
| 	MOV_B	(BL, BH)
 | |
| 	MOV_B	(BH, BL)
 | |
| 	MOV_B	(BL, BH)
 | |
| 	MOV_B	(BH, BL)
 | |
| 	MOV_B	(BL, BH)
 | |
| 	MOV_B	(BH, BL)
 | |
| 	MOV_B	(BL, BH)
 | |
| 	MOV_B	(BH, BL)
 | |
| 	MOV_B	(BL, BH)
 | |
| 	MOV_B	(BH, BL)
 | |
| 
 | |
| 	MOV_B	(BL,REGIND(EDX))
 | |
| 
 | |
| 	INC_L	(ECX)
 | |
| 	DEC_L	(ECX)
 | |
| 	INC_L	(ECX)
 | |
| 	DEC_L	(ECX)
 | |
| 	INC_L	(ECX)
 | |
| 	DEC_L	(ECX)
 | |
| 	INC_L	(ECX)
 | |
| 	DEC_L	(ECX)
 | |
| 	INC_L	(ECX)
 | |
| 	DEC_L	(ECX)
 | |
| 
 | |
| 	INC_L	(ECX)
 | |
| 	INC_L	(EDX)
 | |
| 	INC_L	(EAX)
 | |
| 	CMP_L	(ESI,EAX)
 | |
| 	JL	(L5)
 | |
| L3:
 | |
| 	LEA_L	(REGOFF(-8,EBP),ESP)
 | |
| 	POP_L	(EBX)
 | |
| 	POP_L	(ESI)
 | |
| 	MOV_L	(EBP,ESP)
 | |
| 	POP_L	(EBP)
 | |
| 	RET
 | |
| 
 |