~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sh/lib/udivsi3.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php