diff options
Diffstat (limited to 'arch/arm/lib/ashrdi3.c')
-rw-r--r-- | arch/arm/lib/ashrdi3.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/arch/arm/lib/ashrdi3.c b/arch/arm/lib/ashrdi3.c deleted file mode 100644 index 9a8600a7543f..000000000000 --- a/arch/arm/lib/ashrdi3.c +++ /dev/null | |||
@@ -1,57 +0,0 @@ | |||
1 | /* More subroutines needed by GCC output code on some machines. */ | ||
2 | /* Compile this one with gcc. */ | ||
3 | /* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | ||
4 | |||
5 | This file is part of GNU CC. | ||
6 | |||
7 | GNU CC is free software; you can redistribute it and/or modify | ||
8 | it under the terms of the GNU General Public License as published by | ||
9 | the Free Software Foundation; either version 2, or (at your option) | ||
10 | any later version. | ||
11 | |||
12 | GNU CC is distributed in the hope that it will be useful, | ||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | ||
16 | |||
17 | You should have received a copy of the GNU General Public License | ||
18 | along with GNU CC; see the file COPYING. If not, write to | ||
19 | the Free Software Foundation, 59 Temple Place - Suite 330, | ||
20 | Boston, MA 02111-1307, USA. */ | ||
21 | |||
22 | /* As a special exception, if you link this library with other files, | ||
23 | some of which are compiled with GCC, to produce an executable, | ||
24 | this library does not by itself cause the resulting executable | ||
25 | to be covered by the GNU General Public License. | ||
26 | This exception does not however invalidate any other reasons why | ||
27 | the executable file might be covered by the GNU General Public License. | ||
28 | */ | ||
29 | /* support functions required by the kernel. based on code from gcc-2.95.3 */ | ||
30 | /* I Molton 29/07/01 */ | ||
31 | |||
32 | #include "gcclib.h" | ||
33 | |||
34 | s64 __ashrdi3(s64 u, int b) | ||
35 | { | ||
36 | DIunion w; | ||
37 | int bm; | ||
38 | DIunion uu; | ||
39 | |||
40 | if (b == 0) | ||
41 | return u; | ||
42 | |||
43 | uu.ll = u; | ||
44 | |||
45 | bm = (sizeof(s32) * BITS_PER_UNIT) - b; | ||
46 | if (bm <= 0) { | ||
47 | /* w.s.high = 1..1 or 0..0 */ | ||
48 | w.s.high = uu.s.high >> (sizeof(s32) * BITS_PER_UNIT - 1); | ||
49 | w.s.low = uu.s.high >> -bm; | ||
50 | } else { | ||
51 | u32 carries = (u32) uu.s.high << bm; | ||
52 | w.s.high = uu.s.high >> b; | ||
53 | w.s.low = ((u32) uu.s.low >> b) | carries; | ||
54 | } | ||
55 | |||
56 | return w.ll; | ||
57 | } | ||