35 lines
		
	
	
		
			602 B
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			602 B
		
	
	
	
		
			ArmAsm
		
	
	
	
| /* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
 | |
|    Free Software Foundation, Inc.
 | |
| 
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| #include <linux/linkage.h>
 | |
| #include <asm/assembler.h>
 | |
| 
 | |
| #ifdef __ARMEB__
 | |
| #define al r1
 | |
| #define ah r0
 | |
| #else
 | |
| #define al r0
 | |
| #define ah r1
 | |
| #endif
 | |
| 
 | |
| .pushsection .text.__ashrdi3, "ax"
 | |
| ENTRY(__ashrdi3)
 | |
| ENTRY(__aeabi_lasr)
 | |
| 
 | |
| 	subs	r3, r2, #32
 | |
| 	rsb	ip, r2, #32
 | |
| 	movmi	al, al, lsr r2
 | |
| 	movpl	al, ah, asr r3
 | |
|  ARM(	orrmi	al, al, ah, lsl ip	)
 | |
|  THUMB(	lslmi	r3, ah, ip		)
 | |
|  THUMB(	orrmi	al, al, r3		)
 | |
| 	mov	ah, ah, asr r2
 | |
| 	ret	lr
 | |
| 
 | |
| ENDPROC(__ashrdi3)
 | |
| ENDPROC(__aeabi_lasr)
 | |
| .popsection
 |