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

TOMOYO Linux Cross Reference
Linux/arch/mn10300/lib/ashrdi3.c

Version: ~ [ linux-5.10-rc5 ] ~ [ linux-5.9.10 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.79 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.159 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.208 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.245 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.245 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ 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.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* ashrdi3.c extracted from gcc-2.7.2/libgcc2.c which is: */
  2 /* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
  3 
  4 This file is part of GNU CC.
  5 
  6 GNU CC is free software; you can redistribute it and/or modify
  7 it under the terms of the GNU General Public Licence as published by
  8 the Free Software Foundation; either version 2, or (at your option)
  9 any later version.
 10 
 11 GNU CC is distributed in the hope that it will be useful,
 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14 GNU General Public Licence for more details.
 15 
 16 You should have received a copy of the GNU General Public Licence
 17 along with GNU CC; see the file COPYING.  If not, write to
 18 the Free Software Foundation, 59 Temple Place - Suite 330,
 19 Boston, MA 02111-1307, USA.  */
 20 
 21 #define BITS_PER_UNIT 8
 22 
 23 typedef          int SItype     __attribute__((mode(SI)));
 24 typedef unsigned int USItype    __attribute__((mode(SI)));
 25 typedef          int DItype     __attribute__((mode(DI)));
 26 typedef          int word_type  __attribute__((mode(__word__)));
 27 
 28 struct DIstruct {
 29         SItype low;
 30         SItype high;
 31 };
 32 
 33 union DIunion {
 34         struct DIstruct s;
 35         DItype          ll;
 36 };
 37 
 38 DItype __ashrdi3(DItype u, word_type b)
 39 {
 40         union DIunion w;
 41         union DIunion uu;
 42         word_type bm;
 43 
 44         if (b == 0)
 45                 return u;
 46 
 47         uu.ll = u;
 48 
 49         bm = (sizeof(SItype) * BITS_PER_UNIT) - b;
 50         if (bm <= 0) {
 51                 /* w.s.high = 1..1 or 0..0 */
 52                 w.s.high = uu.s.high >> (sizeof(SItype) * BITS_PER_UNIT - 1);
 53                 w.s.low = uu.s.high >> -bm;
 54         } else {
 55                 USItype carries = (USItype)uu.s.high << bm;
 56                 w.s.high = uu.s.high >> b;
 57                 w.s.low = ((USItype)uu.s.low >> b) | carries;
 58         }
 59 
 60         return w.ll;
 61 }
 62 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp