|  | /* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 | 
|  |  | 
|  | Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, | 
|  | 2004, 2005 | 
|  | Free Software Foundation, Inc. | 
|  | */ | 
|  |  | 
|  | !! libgcc routines for the Renesas / SuperH SH CPUs. | 
|  | !! Contributed by Steve Chamberlain. | 
|  | !! sac@cygnus.com | 
|  |  | 
|  | .balign 4 | 
|  | .global	__udivsi3 | 
|  | .type	__udivsi3, @function | 
|  | div8: | 
|  | div1 r5,r4 | 
|  | div7: | 
|  | div1 r5,r4; div1 r5,r4; div1 r5,r4 | 
|  | div1 r5,r4; div1 r5,r4; div1 r5,r4; rts; div1 r5,r4 | 
|  |  | 
|  | divx4: | 
|  | div1 r5,r4; rotcl r0 | 
|  | div1 r5,r4; rotcl r0 | 
|  | div1 r5,r4; rotcl r0 | 
|  | rts; div1 r5,r4 | 
|  |  | 
|  | __udivsi3: | 
|  | sts.l pr,@-r15 | 
|  | extu.w r5,r0 | 
|  | cmp/eq r5,r0 | 
|  | bf/s large_divisor | 
|  | div0u | 
|  | swap.w r4,r0 | 
|  | shlr16 r4 | 
|  | bsr div8 | 
|  | shll16 r5 | 
|  | bsr div7 | 
|  | div1 r5,r4 | 
|  | xtrct r4,r0 | 
|  | xtrct r0,r4 | 
|  | bsr div8 | 
|  | swap.w r4,r4 | 
|  | bsr div7 | 
|  | div1 r5,r4 | 
|  | lds.l @r15+,pr | 
|  | xtrct r4,r0 | 
|  | swap.w r0,r0 | 
|  | rotcl r0 | 
|  | rts | 
|  | shlr16 r5 | 
|  |  | 
|  | large_divisor: | 
|  | mov #0,r0 | 
|  | xtrct r4,r0 | 
|  | xtrct r0,r4 | 
|  | bsr divx4 | 
|  | rotcl r0 | 
|  | bsr divx4 | 
|  | rotcl r0 | 
|  | bsr divx4 | 
|  | rotcl r0 | 
|  | bsr divx4 | 
|  | rotcl r0 | 
|  | lds.l @r15+,pr | 
|  | rts | 
|  | rotcl r0 |