34 lines
604 B
ArmAsm
34 lines
604 B
ArmAsm
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||
|
/* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
|
||
|
Free Software Foundation, Inc.
|
||
|
*/
|
||
|
|
||
|
#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.__lshldi3, "ax"
|
||
|
ENTRY(__lshrdi3)
|
||
|
ENTRY(__aeabi_llsr)
|
||
|
|
||
|
subs r3, r2, #32
|
||
|
rsb ip, r2, #32
|
||
|
movmi al, al, lsr r2
|
||
|
movpl al, ah, lsr r3
|
||
|
ARM( orrmi al, al, ah, lsl ip )
|
||
|
THUMB( lslmi r3, ah, ip )
|
||
|
THUMB( orrmi al, al, r3 )
|
||
|
mov ah, ah, lsr r2
|
||
|
ret lr
|
||
|
|
||
|
ENDPROC(__lshrdi3)
|
||
|
ENDPROC(__aeabi_llsr)
|
||
|
.popsection
|