]> git.sur5r.net Git - u-boot/blob - arch/sh/lib/udivsi3.S
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / arch / sh / lib / udivsi3.S
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
3    2004, 2005
4    Free Software Foundation, Inc.
5  */
6
7 !! libgcc routines for the Renesas / SuperH SH CPUs.
8 !! Contributed by Steve Chamberlain.
9 !! sac@cygnus.com
10
11         .balign 4
12         .global __udivsi3
13         .type   __udivsi3, @function
14 div8:
15         div1 r5,r4
16 div7:
17         div1 r5,r4; div1 r5,r4; div1 r5,r4
18         div1 r5,r4; div1 r5,r4; div1 r5,r4; rts; div1 r5,r4
19
20 divx4:
21         div1 r5,r4; rotcl r0
22         div1 r5,r4; rotcl r0
23         div1 r5,r4; rotcl r0
24         rts; div1 r5,r4
25
26 __udivsi3:
27         sts.l pr,@-r15
28         extu.w r5,r0
29         cmp/eq r5,r0
30         bf/s large_divisor
31         div0u
32         swap.w r4,r0
33         shlr16 r4
34         bsr div8
35         shll16 r5
36         bsr div7
37         div1 r5,r4
38         xtrct r4,r0
39         xtrct r0,r4
40         bsr div8
41         swap.w r4,r4
42         bsr div7
43         div1 r5,r4
44         lds.l @r15+,pr
45         xtrct r4,r0
46         swap.w r0,r0
47         rotcl r0
48         rts
49         shlr16 r5
50
51 large_divisor:
52         mov #0,r0
53         xtrct r4,r0
54         xtrct r0,r4
55         bsr divx4
56         rotcl r0
57         bsr divx4
58         rotcl r0
59         bsr divx4
60         rotcl r0
61         bsr divx4
62         rotcl r0
63         lds.l @r15+,pr
64         rts
65         rotcl r0