diff options
Diffstat (limited to 'target/linux/ubicom32/patches-2.6.30/120-libgcc_func.patch')
-rw-r--r-- | target/linux/ubicom32/patches-2.6.30/120-libgcc_func.patch | 419 |
1 files changed, 0 insertions, 419 deletions
diff --git a/target/linux/ubicom32/patches-2.6.30/120-libgcc_func.patch b/target/linux/ubicom32/patches-2.6.30/120-libgcc_func.patch deleted file mode 100644 index fee4ece003..0000000000 --- a/target/linux/ubicom32/patches-2.6.30/120-libgcc_func.patch +++ /dev/null @@ -1,419 +0,0 @@ ---- a/arch/ubicom32/Makefile -+++ b/arch/ubicom32/Makefile -@@ -60,9 +60,6 @@ cflags-$(CONFIG_UBICOM32_V4) := -march= - ldflags-$(CONFIG_LINKER_RELAXATION) := --relax - LDFLAGS_vmlinux := $(ldflags-y) - --GCCLIBDIR := $(dir $(shell $(CC) $(cflags-y) -print-libgcc-file-name)) --GCC_LIBS := $(GCCLIBDIR)/libgcc.a -- - KBUILD_CFLAGS += $(cflags-y) -ffunction-sections - KBUILD_AFLAGS += $(cflags-y) - -@@ -84,7 +81,6 @@ core-y += arch/$(ARCH)/kernel/ \ - drivers-$(CONFIG_OPROFILE) += arch/ubicom32/oprofile/ - - libs-y += arch/$(ARCH)/lib/ --libs-y += $(GCC_LIBS) - - archclean: - ---- a/arch/ubicom32/lib/Makefile -+++ b/arch/ubicom32/lib/Makefile -@@ -30,3 +30,4 @@ - # - - lib-y := checksum.o delay.o mem_ubicom32.o -+lib-y += ashldi3.o ashrdi3.o divmod.o lshrdi3.o muldi3.o ---- /dev/null -+++ b/arch/ubicom32/lib/ashldi3.c -@@ -0,0 +1,62 @@ -+/* ashrdi3.c extracted from gcc-2.95.2/libgcc2.c which is: */ -+/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. -+ -+This file is part of GNU CC. -+ -+GNU CC is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2, or (at your option) -+any later version. -+ -+GNU CC is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+#define BITS_PER_UNIT 8 -+ -+typedef int SItype __attribute__ ((mode (SI))); -+typedef unsigned int USItype __attribute__ ((mode (SI))); -+typedef int DItype __attribute__ ((mode (DI))); -+typedef int word_type __attribute__ ((mode (__word__))); -+ -+struct DIstruct {SItype high, low;}; -+ -+typedef union -+{ -+ struct DIstruct s; -+ DItype ll; -+} DIunion; -+ -+DItype -+__ashldi3 (DItype u, word_type b) -+{ -+ DIunion w; -+ word_type bm; -+ DIunion uu; -+ -+ if (b == 0) -+ return u; -+ -+ uu.ll = u; -+ -+ bm = (sizeof (SItype) * BITS_PER_UNIT) - b; -+ if (bm <= 0) -+ { -+ w.s.low = 0; -+ w.s.high = (USItype)uu.s.low << -bm; -+ } -+ else -+ { -+ USItype carries = (USItype)uu.s.low >> bm; -+ w.s.low = (USItype)uu.s.low << b; -+ w.s.high = ((USItype)uu.s.high << b) | carries; -+ } -+ -+ return w.ll; -+} ---- /dev/null -+++ b/arch/ubicom32/lib/ashrdi3.c -@@ -0,0 +1,63 @@ -+/* ashrdi3.c extracted from gcc-2.7.2/libgcc2.c which is: */ -+/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. -+ -+This file is part of GNU CC. -+ -+GNU CC is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2, or (at your option) -+any later version. -+ -+GNU CC is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+#define BITS_PER_UNIT 8 -+ -+typedef int SItype __attribute__ ((mode (SI))); -+typedef unsigned int USItype __attribute__ ((mode (SI))); -+typedef int DItype __attribute__ ((mode (DI))); -+typedef int word_type __attribute__ ((mode (__word__))); -+ -+struct DIstruct {SItype high, low;}; -+ -+typedef union -+{ -+ struct DIstruct s; -+ DItype ll; -+} DIunion; -+ -+DItype -+__ashrdi3 (DItype u, word_type b) -+{ -+ DIunion w; -+ word_type bm; -+ DIunion uu; -+ -+ if (b == 0) -+ return u; -+ -+ uu.ll = u; -+ -+ bm = (sizeof (SItype) * BITS_PER_UNIT) - b; -+ if (bm <= 0) -+ { -+ /* w.s.high = 1..1 or 0..0 */ -+ w.s.high = uu.s.high >> (sizeof (SItype) * BITS_PER_UNIT - 1); -+ w.s.low = uu.s.high >> -bm; -+ } -+ else -+ { -+ USItype carries = (USItype)uu.s.high << bm; -+ w.s.high = uu.s.high >> b; -+ w.s.low = ((USItype)uu.s.low >> b) | carries; -+ } -+ -+ return w.ll; -+} ---- /dev/null -+++ b/arch/ubicom32/lib/divmod.c -@@ -0,0 +1,85 @@ -+unsigned long -+udivmodsi4(unsigned long num, unsigned long den, int modwanted) -+{ -+ unsigned long bit = 1; -+ unsigned long res = 0; -+ -+ while (den < num && bit && !(den & (1L<<31))) -+ { -+ den <<=1; -+ bit <<=1; -+ } -+ while (bit) -+ { -+ if (num >= den) -+ { -+ num -= den; -+ res |= bit; -+ } -+ bit >>=1; -+ den >>=1; -+ } -+ if (modwanted) return num; -+ return res; -+} -+ -+long -+__udivsi3 (long a, long b) -+{ -+ return udivmodsi4 (a, b, 0); -+} -+ -+long -+__umodsi3 (long a, long b) -+{ -+ return udivmodsi4 (a, b, 1); -+} -+ -+long -+__divsi3 (long a, long b) -+{ -+ int neg = 0; -+ long res; -+ -+ if (a < 0) -+ { -+ a = -a; -+ neg = !neg; -+ } -+ -+ if (b < 0) -+ { -+ b = -b; -+ neg = !neg; -+ } -+ -+ res = udivmodsi4 (a, b, 0); -+ -+ if (neg) -+ res = -res; -+ -+ return res; -+} -+ -+long -+__modsi3 (long a, long b) -+{ -+ int neg = 0; -+ long res; -+ -+ if (a < 0) -+ { -+ a = -a; -+ neg = 1; -+ } -+ -+ if (b < 0) -+ b = -b; -+ -+ res = udivmodsi4 (a, b, 1); -+ -+ if (neg) -+ res = -res; -+ -+ return res; -+} ---- /dev/null -+++ b/arch/ubicom32/lib/lshrdi3.c -@@ -0,0 +1,62 @@ -+/* lshrdi3.c extracted from gcc-2.7.2/libgcc2.c which is: */ -+/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. -+ -+This file is part of GNU CC. -+ -+GNU CC is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2, or (at your option) -+any later version. -+ -+GNU CC is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+#define BITS_PER_UNIT 8 -+ -+typedef int SItype __attribute__ ((mode (SI))); -+typedef unsigned int USItype __attribute__ ((mode (SI))); -+typedef int DItype __attribute__ ((mode (DI))); -+typedef int word_type __attribute__ ((mode (__word__))); -+ -+struct DIstruct {SItype high, low;}; -+ -+typedef union -+{ -+ struct DIstruct s; -+ DItype ll; -+} DIunion; -+ -+DItype -+__lshrdi3 (DItype u, word_type b) -+{ -+ DIunion w; -+ word_type bm; -+ DIunion uu; -+ -+ if (b == 0) -+ return u; -+ -+ uu.ll = u; -+ -+ bm = (sizeof (SItype) * BITS_PER_UNIT) - b; -+ if (bm <= 0) -+ { -+ w.s.high = 0; -+ w.s.low = (USItype)uu.s.high >> -bm; -+ } -+ else -+ { -+ USItype carries = (USItype)uu.s.high << bm; -+ w.s.high = (USItype)uu.s.high >> b; -+ w.s.low = ((USItype)uu.s.low >> b) | carries; -+ } -+ -+ return w.ll; -+} ---- /dev/null -+++ b/arch/ubicom32/lib/muldi3.c -@@ -0,0 +1,87 @@ -+/* muldi3.c extracted from gcc-2.7.2.3/libgcc2.c and -+ gcc-2.7.2.3/longlong.h which is: */ -+/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. -+ -+This file is part of GNU CC. -+ -+GNU CC is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2, or (at your option) -+any later version. -+ -+GNU CC is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+#define UWtype USItype -+#define UHWtype USItype -+#define W_TYPE_SIZE 32 -+#define __BITS4 (W_TYPE_SIZE / 4) -+#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2)) -+#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1)) -+#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2)) -+ -+#define umul_ppmm(w1, w0, u, v) \ -+ do { \ -+ UWtype __x0, __x1, __x2, __x3; \ -+ UHWtype __ul, __vl, __uh, __vh; \ -+ \ -+ __ul = __ll_lowpart (u); \ -+ __uh = __ll_highpart (u); \ -+ __vl = __ll_lowpart (v); \ -+ __vh = __ll_highpart (v); \ -+ \ -+ __x0 = (UWtype) __ul * __vl; \ -+ __x1 = (UWtype) __ul * __vh; \ -+ __x2 = (UWtype) __uh * __vl; \ -+ __x3 = (UWtype) __uh * __vh; \ -+ \ -+ __x1 += __ll_highpart (__x0);/* this can't give carry */ \ -+ __x1 += __x2; /* but this indeed can */ \ -+ if (__x1 < __x2) /* did we get it? */ \ -+ __x3 += __ll_B; /* yes, add it in the proper pos. */ \ -+ \ -+ (w1) = __x3 + __ll_highpart (__x1); \ -+ (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \ -+ } while (0) -+ -+ -+#define __umulsidi3(u, v) \ -+ ({DIunion __w; \ -+ umul_ppmm (__w.s.high, __w.s.low, u, v); \ -+ __w.ll; }) -+ -+typedef int SItype __attribute__ ((mode (SI))); -+typedef unsigned int USItype __attribute__ ((mode (SI))); -+typedef int DItype __attribute__ ((mode (DI))); -+typedef int word_type __attribute__ ((mode (__word__))); -+ -+struct DIstruct {SItype high, low;}; -+ -+typedef union -+{ -+ struct DIstruct s; -+ DItype ll; -+} DIunion; -+ -+DItype -+__muldi3 (DItype u, DItype v) -+{ -+ DIunion w; -+ DIunion uu, vv; -+ -+ uu.ll = u, -+ vv.ll = v; -+ -+ w.ll = __umulsidi3 (uu.s.low, vv.s.low); -+ w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high -+ + (USItype) uu.s.high * (USItype) vv.s.low); -+ -+ return w.ll; -+} ---- a/arch/ubicom32/kernel/ubicom32_ksyms.c -+++ b/arch/ubicom32/kernel/ubicom32_ksyms.c -@@ -72,7 +72,6 @@ EXPORT_SYMBOL(memmove); - extern void __ashldi3(void); - extern void __ashrdi3(void); - extern void __divsi3(void); --extern void __divdi3(void); - extern void __lshrdi3(void); - extern void __modsi3(void); - extern void __muldi3(void); -@@ -83,7 +82,6 @@ extern void __umodsi3(void); - EXPORT_SYMBOL(__ashldi3); - EXPORT_SYMBOL(__ashrdi3); - EXPORT_SYMBOL(__divsi3); --EXPORT_SYMBOL(__divdi3); - EXPORT_SYMBOL(__lshrdi3); - EXPORT_SYMBOL(__modsi3); - EXPORT_SYMBOL(__muldi3); |