^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * ashldi3.S: GCC emits these for certain drivers playing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * with long longs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 1999 David S. Miller (davem@redhat.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) ENTRY(__ashldi3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) cmp %o2, 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) be 9f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) mov 0x20, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) sub %g2, %o2, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) cmp %g2, 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) bg 7f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) sll %o0, %o2, %g3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) neg %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) clr %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) b 8f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) sll %o1, %g2, %o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 7:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) srl %o1, %g2, %g2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) sll %o1, %o2, %o5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) or %g3, %g2, %o4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 8:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) mov %o4, %o0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) mov %o5, %o1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 9:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) retl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) nop
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ENDPROC(__ashldi3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) EXPORT_SYMBOL(__ashldi3)