1 /* SPDX-License-Identifier: GPL-2.0-or-later W << 2 #include <linux/linkage.h> 1 #include <linux/linkage.h> 3 #include <asm/asmmacro.h> << 4 #include <asm/core.h> << 5 << 6 #ifdef __XTENSA_EB__ << 7 #define uh a2 << 8 #define ul a3 << 9 #else << 10 #define uh a3 << 11 #define ul a2 << 12 #endif /* __XTENSA_EB__ */ << 13 2 14 ENTRY(__lshrdi3) 3 ENTRY(__lshrdi3) >> 4 cmp %o2, 0 >> 5 be 3f >> 6 mov 0x20, %g2 15 7 16 abi_entry_default !! 8 sub %g2, %o2, %g2 17 ssr a4 !! 9 cmp %g2, 0 18 bgei a4, 32, .Lhigh_only !! 10 bg 1f 19 src ul, uh, ul !! 11 srl %o0, %o2, %o4 20 srl uh, uh << 21 abi_ret_default << 22 << 23 .Lhigh_only: << 24 srl ul, uh << 25 movi uh, 0 << 26 abi_ret_default << 27 12 >> 13 clr %o4 >> 14 neg %g2 >> 15 b 2f >> 16 srl %o0, %g2, %o5 >> 17 1: >> 18 sll %o0, %g2, %g3 >> 19 srl %o1, %o2, %g2 >> 20 or %g2, %g3, %o5 >> 21 2: >> 22 mov %o4, %o0 >> 23 mov %o5, %o1 >> 24 3: >> 25 retl >> 26 nop 28 ENDPROC(__lshrdi3) 27 ENDPROC(__lshrdi3) 29 EXPORT_SYMBOL(__lshrdi3) <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.