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