forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1015 B
66 lines
1015 B
/* 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
|
|
|