Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * ashldi3.S:   GCC emits these for certain drivers playing
0004  *      with long longs.
0005  *
0006  * Copyright (C) 1999 David S. Miller (davem@redhat.com)
0007  */
0008 
0009 #include <linux/linkage.h>
0010 #include <asm/export.h>
0011 
0012     .text
0013 ENTRY(__ashldi3)
0014     cmp %o2, 0
0015     be  9f
0016      mov    0x20, %g2
0017 
0018     sub %g2, %o2, %g2
0019     cmp %g2, 0
0020     bg  7f
0021      sll    %o0, %o2, %g3
0022 
0023     neg %g2
0024     clr %o5
0025     b   8f
0026      sll    %o1, %g2, %o4
0027 7:
0028     srl %o1, %g2, %g2
0029     sll %o1, %o2, %o5
0030     or  %g3, %g2, %o4
0031 8:
0032     mov %o4, %o0
0033     mov %o5, %o1
0034 9:
0035     retl
0036      nop
0037 ENDPROC(__ashldi3)
0038 EXPORT_SYMBOL(__ashldi3)