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