18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci   Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
48c2ecf20Sopenharmony_ci   2004, 2005
58c2ecf20Sopenharmony_ci   Free Software Foundation, Inc.
68c2ecf20Sopenharmony_ci*/
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci!! libgcc routines for the Renesas / SuperH SH CPUs.
98c2ecf20Sopenharmony_ci!! Contributed by Steve Chamberlain.
108c2ecf20Sopenharmony_ci!! sac@cygnus.com
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci	.balign 4
138c2ecf20Sopenharmony_ci	.global	__udivsi3
148c2ecf20Sopenharmony_ci	.type	__udivsi3, @function
158c2ecf20Sopenharmony_cidiv8:
168c2ecf20Sopenharmony_ci	div1 r5,r4
178c2ecf20Sopenharmony_cidiv7:
188c2ecf20Sopenharmony_ci	div1 r5,r4; div1 r5,r4; div1 r5,r4
198c2ecf20Sopenharmony_ci	div1 r5,r4; div1 r5,r4; div1 r5,r4; rts; div1 r5,r4
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_cidivx4:
228c2ecf20Sopenharmony_ci	div1 r5,r4; rotcl r0
238c2ecf20Sopenharmony_ci	div1 r5,r4; rotcl r0
248c2ecf20Sopenharmony_ci	div1 r5,r4; rotcl r0
258c2ecf20Sopenharmony_ci	rts; div1 r5,r4
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci__udivsi3:
288c2ecf20Sopenharmony_ci	sts.l pr,@-r15
298c2ecf20Sopenharmony_ci	extu.w r5,r0
308c2ecf20Sopenharmony_ci	cmp/eq r5,r0
318c2ecf20Sopenharmony_ci	bf/s large_divisor
328c2ecf20Sopenharmony_ci	div0u
338c2ecf20Sopenharmony_ci	swap.w r4,r0
348c2ecf20Sopenharmony_ci	shlr16 r4
358c2ecf20Sopenharmony_ci	bsr div8
368c2ecf20Sopenharmony_ci	shll16 r5
378c2ecf20Sopenharmony_ci	bsr div7
388c2ecf20Sopenharmony_ci	div1 r5,r4
398c2ecf20Sopenharmony_ci	xtrct r4,r0
408c2ecf20Sopenharmony_ci	xtrct r0,r4
418c2ecf20Sopenharmony_ci	bsr div8
428c2ecf20Sopenharmony_ci	swap.w r4,r4
438c2ecf20Sopenharmony_ci	bsr div7
448c2ecf20Sopenharmony_ci	div1 r5,r4
458c2ecf20Sopenharmony_ci	lds.l @r15+,pr
468c2ecf20Sopenharmony_ci	xtrct r4,r0
478c2ecf20Sopenharmony_ci	swap.w r0,r0
488c2ecf20Sopenharmony_ci	rotcl r0
498c2ecf20Sopenharmony_ci	rts
508c2ecf20Sopenharmony_ci	shlr16 r5
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_cilarge_divisor:
538c2ecf20Sopenharmony_ci	mov #0,r0
548c2ecf20Sopenharmony_ci	xtrct r4,r0
558c2ecf20Sopenharmony_ci	xtrct r0,r4
568c2ecf20Sopenharmony_ci	bsr divx4
578c2ecf20Sopenharmony_ci	rotcl r0
588c2ecf20Sopenharmony_ci	bsr divx4
598c2ecf20Sopenharmony_ci	rotcl r0
608c2ecf20Sopenharmony_ci	bsr divx4
618c2ecf20Sopenharmony_ci	rotcl r0
628c2ecf20Sopenharmony_ci	bsr divx4
638c2ecf20Sopenharmony_ci	rotcl r0
648c2ecf20Sopenharmony_ci	lds.l @r15+,pr
658c2ecf20Sopenharmony_ci	rts
668c2ecf20Sopenharmony_ci	rotcl r0
67