75 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
 | |
|  *
 | |
|  * Copyright (C) 2017-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
 | |
|  */
 | |
| 
 | |
| #include <linux/linkage.h>
 | |
| 
 | |
| #include <asm/assembler.h>
 | |
| 
 | |
| SYM_FUNC_START(__ashlti3)
 | |
| 	cbz	x2, 1f
 | |
| 	mov	x3, #64
 | |
| 	sub	x3, x3, x2
 | |
| 	cmp	x3, #0
 | |
| 	b.le	2f
 | |
| 	lsl	x1, x1, x2
 | |
| 	lsr	x3, x0, x3
 | |
| 	lsl	x2, x0, x2
 | |
| 	orr	x1, x1, x3
 | |
| 	mov	x0, x2
 | |
| 1:
 | |
| 	ret
 | |
| 2:
 | |
| 	neg	w1, w3
 | |
| 	mov	x2, #0
 | |
| 	lsl	x1, x0, x1
 | |
| 	mov	x0, x2
 | |
| 	ret
 | |
| SYM_FUNC_END(__ashlti3)
 | |
| EXPORT_SYMBOL(__ashlti3)
 | |
| 
 | |
| SYM_FUNC_START(__ashrti3)
 | |
| 	cbz	x2, 1f
 | |
| 	mov	x3, #64
 | |
| 	sub	x3, x3, x2
 | |
| 	cmp	x3, #0
 | |
| 	b.le	2f
 | |
| 	lsr	x0, x0, x2
 | |
| 	lsl	x3, x1, x3
 | |
| 	asr	x2, x1, x2
 | |
| 	orr	x0, x0, x3
 | |
| 	mov	x1, x2
 | |
| 1:
 | |
| 	ret
 | |
| 2:
 | |
| 	neg	w0, w3
 | |
| 	asr	x2, x1, #63
 | |
| 	asr	x0, x1, x0
 | |
| 	mov	x1, x2
 | |
| 	ret
 | |
| SYM_FUNC_END(__ashrti3)
 | |
| EXPORT_SYMBOL(__ashrti3)
 | |
| 
 | |
| SYM_FUNC_START(__lshrti3)
 | |
| 	cbz	x2, 1f
 | |
| 	mov	x3, #64
 | |
| 	sub	x3, x3, x2
 | |
| 	cmp	x3, #0
 | |
| 	b.le	2f
 | |
| 	lsr	x0, x0, x2
 | |
| 	lsl	x3, x1, x3
 | |
| 	lsr	x2, x1, x2
 | |
| 	orr	x0, x0, x3
 | |
| 	mov	x1, x2
 | |
| 1:
 | |
| 	ret
 | |
| 2:
 | |
| 	neg	w0, w3
 | |
| 	mov	x2, #0
 | |
| 	lsr	x0, x1, x0
 | |
| 	mov	x1, x2
 | |
| 	ret
 | |
| SYM_FUNC_END(__lshrti3)
 | |
| EXPORT_SYMBOL(__lshrti3)
 |