Home | History | Annotate | Download | only in lib
      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
     66