summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-06-08 23:10:47 +0200
committerKoen Kooi <koen@openembedded.org>2009-06-08 23:10:47 +0200
commit9543ab8f8c447be3d2c5a28cc4476beccc9aba8c (patch)
tree117467ba59248465be9b5f3d4669d6668479e68c /recipes
parentecc34f8be789bf05459461c5d81bf0ce5177e340 (diff)
parent487041c96b272fa4f21c7e05b6cde2b0355dc97e (diff)
Merge branch 'org.openembedded.dev' of git@git.openembedded.org:openembedded into org.openembedded.dev
Diffstat (limited to 'recipes')
-rw-r--r--recipes/binutils/binutils_2.18.bb5
-rw-r--r--recipes/binutils/files/binutils-crunch.patch163
-rw-r--r--recipes/busybox/busybox-1.13.2/defconfig2
-rw-r--r--recipes/busybox/busybox.inc8
-rw-r--r--recipes/busybox/busybox_1.11.3.bb5
-rw-r--r--recipes/busybox/busybox_1.13.2.bb6
-rw-r--r--recipes/bwm-ng/bwm-ng_0.6.bb16
-rw-r--r--recipes/e2fsprogs/e2fsprogs-native_1.38.bb1
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch133
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch88
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch112
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-eabi-unwind.patch12
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-eabi.patch461
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-endian-bigword-littlebyte.patch40
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-endian-littleword-littlebyte.patch40
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-oabi.patch310
-rw-r--r--recipes/glibc/glibc-2.4/glibc-crunch-oabi2.patch18
-rw-r--r--recipes/glibc/glibc-package.bbclass2
-rw-r--r--recipes/glibc/glibc_2.6.1.bb9
-rw-r--r--recipes/iptraf/iptraf-3.0.0/support-makefile.patch18
-rw-r--r--recipes/iptraf/iptraf_3.0.0.bb34
-rw-r--r--recipes/krb/krb5_1.6.3.bb2
-rw-r--r--recipes/linux/linux-powerpc-fsl-git/mpc8315e-rdb/defconfig1373
-rw-r--r--recipes/linux/linux-powerpc-fsl_git.bb4
-rw-r--r--recipes/minicom/minicom-2.3/rename-conflicting-functions.patch13
-rw-r--r--recipes/minicom/minicom_2.3.bb1
-rw-r--r--recipes/mtools/mtools_4.0.10.bb6
-rw-r--r--recipes/musicpd/mpd_0.14.2.bb4
-rw-r--r--recipes/xorg-util/util-macros-1.2.1/cross-compiler-for-checking.patch11
-rw-r--r--recipes/xorg-util/util-macros_1.2.1.bb6
-rw-r--r--recipes/xorg-xserver/files/xorg-avr32-support.diff2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive-1.4.0.90/w100-autofoo.patch2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive-1.4.2/w100-autofoo.patch2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive-1.4.99.901/w100-autofoo.patch2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive-1.5.3/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive-1.5.3/w100-autofoo.patch2
-rw-r--r--recipes/xorg-xserver/xserver-kdrive/w100-autofoo.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg-1.3.0.0/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg-1.4.2/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg-1.4/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg-1.5.1/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg-1.6.1/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg/dri.patch4
-rw-r--r--recipes/xorg-xserver/xserver-xorg/drmfix.patch2
-rw-r--r--recipes/xorg-xserver/xserver-xorg/miext_layer_shadow_h.patch13
47 files changed, 2531 insertions, 419 deletions
diff --git a/recipes/binutils/binutils_2.18.bb b/recipes/binutils/binutils_2.18.bb
index 0155fb1151..3b650c679b 100644
--- a/recipes/binutils/binutils_2.18.bb
+++ b/recipes/binutils/binutils_2.18.bb
@@ -1,4 +1,4 @@
-PR = "r5"
+PR = "r6"
require binutils.inc
LICENSE = "GPLv3"
@@ -18,3 +18,6 @@ SRC_URI = "\
# powerpc patches
SRC_URI += "file://binutils-2.16.1-e300c2c3.patch;patch=1"
+
+# ep93xx crunch patches
+SRC_URI_append_ep9312 = " file://binutils-crunch.patch;patch=1"
diff --git a/recipes/binutils/files/binutils-crunch.patch b/recipes/binutils/files/binutils-crunch.patch
new file mode 100644
index 0000000000..79771aad2c
--- /dev/null
+++ b/recipes/binutils/files/binutils-crunch.patch
@@ -0,0 +1,163 @@
+--- binutils-2.18-original/gas/config/tc-arm.c 2007-05-18 13:45:49.000000000 +1000
++++ binutils-2.18/gas/config/tc-arm.c 2008-04-03 12:38:28.000000000 +1000
+@@ -3573,6 +3575,140 @@
+ ignore_rest_of_line ();
+ }
+
++/* Parse a directive saving Maverick Crunch double registers. */
++
++static void
++s_arm_unwind_save_mvd (void)
++{
++ int reg;
++ int hi_reg;
++ int i;
++ unsigned mask = 0;
++ valueT op;
++
++ if (*input_line_pointer == '{')
++ input_line_pointer++;
++
++ do
++ {
++ reg = arm_reg_parse (&input_line_pointer, REG_TYPE_MVD);
++
++ if (reg == FAIL)
++ {
++ as_bad (_(reg_expected_msgs[REG_TYPE_MVD]));
++ goto error;
++ }
++
++ if (mask >> reg)
++ as_tsktsk (_("register list not in ascending order"));
++ mask |= 1 << reg;
++
++ if (*input_line_pointer == '-')
++ {
++ input_line_pointer++;
++ hi_reg = arm_reg_parse (&input_line_pointer, REG_TYPE_MVD);
++ if (hi_reg == FAIL)
++ {
++ as_bad (_(reg_expected_msgs[REG_TYPE_MVD]));
++ goto error;
++ }
++ else if (reg >= hi_reg)
++ {
++ as_bad (_("bad register range"));
++ goto error;
++ }
++ for (; reg < hi_reg; reg++)
++ mask |= 1 << reg;
++ }
++ }
++ while (skip_past_comma (&input_line_pointer) != FAIL);
++
++ if (*input_line_pointer == '}')
++ input_line_pointer++;
++
++ demand_empty_rest_of_line ();
++
++ /* Generate any deferred opcodes because we're going to be looking at
++ the list. */
++ flush_pending_unwind ();
++
++ for (i = 0; i < 16; i++)
++ {
++ if (mask & (1 << i))
++ unwind.frame_size += 8;
++ }
++
++ /* Attempt to combine with a previous opcode. We do this because gcc
++ likes to output separate unwind directives for a single block of
++ registers. */
++ if (unwind.opcode_count > 0)
++ {
++ i = unwind.opcodes[unwind.opcode_count - 1];
++ if ((i & 0xf8) == 0xd8)
++ {
++ i &= 7;
++ /* Only merge if the blocks are contiguous. */
++ if (i < 6)
++ {
++ if ((mask & 0xfe00) == (1 << 9))
++ {
++ mask |= ((1 << (i + 11)) - 1) & 0xfc00;
++ unwind.opcode_count--;
++ }
++ }
++ else if (i == 6 && unwind.opcode_count >= 2)
++ {
++ i = unwind.opcodes[unwind.opcode_count - 2];
++ reg = i >> 4;
++ i &= 0xf;
++
++ op = 0xffff << (reg - 1);
++ if (reg > 0
++ && ((mask & op) == (1u << (reg - 1))))
++ {
++ op = (1 << (reg + i + 1)) - 1;
++ op &= ~((1 << reg) - 1);
++ mask |= op;
++ unwind.opcode_count -= 2;
++ }
++ }
++ }
++ }
++
++ hi_reg = 15;
++ /* We want to generate opcodes in the order the registers have been
++ saved, ie. descending order. */
++ for (reg = 15; reg >= -1; reg--)
++ {
++ /* Save registers in blocks. */
++ if (reg < 0
++ || !(mask & (1 << reg)))
++ {
++ /* We found an unsaved reg. Generate opcodes to save the
++ preceeding block. */
++ if (reg != hi_reg)
++ {
++ if (reg == 9)
++ {
++ /* Short form. */
++ op = 0xd8 | (hi_reg - 10);
++ add_unwind_opcode (op, 1);
++ }
++ else
++ {
++ /* Long form. */
++ op = 0xde00 | ((reg + 1) << 4) | ((hi_reg - reg) - 1);
++ add_unwind_opcode (op, 2);
++ }
++ }
++ hi_reg = reg - 1;
++ }
++ }
++
++ return;
++error:
++ ignore_rest_of_line ();
++}
+
+ /* Parse an unwind_save directive.
+ If the argument is non-zero, this is a .vsave directive. */
+@@ -3624,6 +3760,8 @@
+ case REG_TYPE_MMXWR: s_arm_unwind_save_mmxwr (); return;
+ case REG_TYPE_MMXWCG: s_arm_unwind_save_mmxwcg (); return;
+
++ case REG_TYPE_MVD: s_arm_unwind_save_mvd (); return;
++
+ default:
+ as_bad (_(".unwind_save does not support this kind of register"));
+ ignore_rest_of_line ();
+@@ -14256,8 +14394,8 @@
+ REGDEF(FPSID,0,VFC), REGDEF(FPSCR,1,VFC), REGDEF(FPEXC,8,VFC),
+
+ /* Maverick DSP coprocessor registers. */
+- REGSET(mvf,MVF), REGSET(mvd,MVD), REGSET(mvfx,MVFX), REGSET(mvdx,MVDX),
+- REGSET(MVF,MVF), REGSET(MVD,MVD), REGSET(MVFX,MVFX), REGSET(MVDX,MVDX),
++ REGSET(mv,MVD), REGSET(mvf,MVF), REGSET(mvd,MVD), REGSET(mvfx,MVFX), REGSET(mvdx,MVDX),
++ REGSET(MV,MVD), REGSET(MVF,MVF), REGSET(MVD,MVD), REGSET(MVFX,MVFX), REGSET(MVDX,MVDX),
+
+ REGNUM(mvax,0,MVAX), REGNUM(mvax,1,MVAX),
+ REGNUM(mvax,2,MVAX), REGNUM(mvax,3,MVAX),
diff --git a/recipes/busybox/busybox-1.13.2/defconfig b/recipes/busybox/busybox-1.13.2/defconfig
index 0db650fcf1..ddbaa0839d 100644
--- a/recipes/busybox/busybox-1.13.2/defconfig
+++ b/recipes/busybox/busybox-1.13.2/defconfig
@@ -720,7 +720,7 @@ CONFIG_FEATURE_UDHCPC_ARPING=y
# CONFIG_FEATURE_UDHCP_PORT is not set
# CONFIG_UDHCP_DEBUG is not set
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
-CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+CONFIG_UDHCPC_DEFAULT_SCRIPT="@DATADIR@/udhcpc/default.script"
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
# CONFIG_VCONFIG is not set
CONFIG_WGET=y
diff --git a/recipes/busybox/busybox.inc b/recipes/busybox/busybox.inc
index 106938e01b..e056ad1141 100644
--- a/recipes/busybox/busybox.inc
+++ b/recipes/busybox/busybox.inc
@@ -11,7 +11,7 @@ LICENSE = "GPL"
SECTION = "base"
PRIORITY = "required"
-INC_PR = "r20"
+INC_PR = "r21"
SRC_URI = "\
http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
@@ -59,6 +59,12 @@ LD = "${CC} -nostdlib"
inherit cml1 update-rc.d
+do_configure () {
+ sed -e 's#@DATADIR@#${datadir}#g' \
+ < ${WORKDIR}/defconfig > ${S}/.config
+ cml1_do_configure
+}
+
do_compile() {
unset CFLAGS CPPFLAGS CXXFLAGS
base_do_compile
diff --git a/recipes/busybox/busybox_1.11.3.bb b/recipes/busybox/busybox_1.11.3.bb
index 673fe15ba7..551826438b 100644
--- a/recipes/busybox/busybox_1.11.3.bb
+++ b/recipes/busybox/busybox_1.11.3.bb
@@ -25,11 +25,6 @@ SRC_URI = "\
EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
- cml1_do_configure
-}
-
do_install_append() {
install -m 0644 ${WORKDIR}/mdev.conf ${D}${sysconfdir}/
install -d ${D}${sysconfdir}/init.d/
diff --git a/recipes/busybox/busybox_1.13.2.bb b/recipes/busybox/busybox_1.13.2.bb
index c1cc51baf1..03a7208229 100644
--- a/recipes/busybox/busybox_1.13.2.bb
+++ b/recipes/busybox/busybox_1.13.2.bb
@@ -39,12 +39,10 @@ SRC_URI = "\
EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
-do_configure () {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+do_configure_prepend () {
if [ "${TARGET_ARCH}" = "avr32" ] ; then
- sed -i s:CONFIG_FEATURE_OSF_LABEL=y:CONFIG_FEATURE_OSF_LABEL=n: ${S}/.config
+ sed -i s:CONFIG_FEATURE_OSF_LABEL=y:CONFIG_FEATURE_OSF_LABEL=n: ${WORKDIR}/defconfig
fi
- cml1_do_configure
}
do_install_append() {
diff --git a/recipes/bwm-ng/bwm-ng_0.6.bb b/recipes/bwm-ng/bwm-ng_0.6.bb
new file mode 100644
index 0000000000..5a2816248b
--- /dev/null
+++ b/recipes/bwm-ng/bwm-ng_0.6.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Lightweight console network and disk bandwidth monitor"
+LICENSE = "GPLv2"
+DEPENDS = "ncurses"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/bwmng/bwm-ng-${PV}.tar.gz"
+
+inherit autotools
+
+# Use /proc/net/dev and /proc/diskstats rather than full libstatgrab.
+# Disable netstat -i parser as it's not compatible with busybox netstat.
+EXTRA_OECONF = " \
+ --with-procnetdev --with-diskstats \
+ --with-libstatgrab=no \
+ --with-netstatlinux=no \
+"
diff --git a/recipes/e2fsprogs/e2fsprogs-native_1.38.bb b/recipes/e2fsprogs/e2fsprogs-native_1.38.bb
index 13fd2beb0c..cef0aa41e8 100644
--- a/recipes/e2fsprogs/e2fsprogs-native_1.38.bb
+++ b/recipes/e2fsprogs/e2fsprogs-native_1.38.bb
@@ -16,4 +16,5 @@ DEPENDS = ""
do_stage () {
oe_runmake install
+ install ${S}/lib/et/compile_et ${STAGING_BINDIR_NATIVE}
}
diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch
new file mode 100644
index 0000000000..b509b133c7
--- /dev/null
+++ b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-force.patch
@@ -0,0 +1,133 @@
+diff -urN glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h
+--- glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h 2008-04-04 18:32:58.000000000 +1000
++++ glibc-2.6.1/ports/sysdeps/arm/eabi/bits/fenv.h 2008-04-07 10:40:28.000000000 +1000
+@@ -20,6 +20,8 @@
+ # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
+ #endif
+
++#if 0
++
+ /* Define bits representing exceptions in the VFP FPU status word. */
+ enum
+ {
+@@ -55,37 +57,50 @@
+ #define FE_TOWARDZERO FE_TOWARDZERO
+ };
+
++#endif
++
+ /* Define bits representing exceptions in the CRUNCH FPU status word. */
+ enum
+ {
+ FE_CRUNCH_INVALID = (1),
+ #define FE_CRUNCH_INVALID FE_CRUNCH_INVALID
++#define FE_INVALID FE_CRUNCH_INVALID
++#define FE_DIVBYZERO 0
+ FE_CRUNCH_OVERFLOW = (4),
+ #define FE_CRUNCH_OVERFLOW FE_CRUNCH_OVERFLOW
++#define FE_OVERFLOW FE_CRUNCH_OVERFLOW
+ FE_CRUNCH_UNDERFLOW = (8),
+ #define FE_CRUNCH_UNDERFLOW FE_CRUNCH_UNDERFLOW
++#define FE_UNDERFLOW FE_CRUNCH_UNDERFLOW
+ FE_CRUNCH_INEXACT = (16),
+ #define FE_CRUNCH_INEXACT FE_CRUNCH_INEXACT
++#define FE_INEXACT FE_CRUNCH_INEXACT
+ };
+
+ /* Amount to shift by to convert an exception to a mask bit. */
+ #define FE_CRUNCH_EXCEPT_SHIFT 5
++#define FE_EXCEPT_SHIFT FE_CRUNCH_EXCEPT_SHIFT
+
+ /* All supported exceptions, except DIVBYZERO. */
+ #define FE_CRUNCH_ALL_EXCEPT \
+ (FE_CRUNCH_INVALID | FE_CRUNCH_OVERFLOW | FE_CRUNCH_UNDERFLOW | FE_CRUNCH_INEXACT)
++#define FE_ALL_EXCEPT FE_CRUNCH_ALL_EXCEPT
+
+ /* CRUNCH supports all of the four defined rounding modes. */
+ enum
+ {
+ FE_CRUNCH_TONEAREST = 0,
+ #define FE_CRUNCH_TONEAREST FE_CRUNCH_TONEAREST
++#define FE_TONEAREST FE_CRUNCH_TONEAREST
+ FE_CRUNCH_TOWARDZERO = 0x400,
+ #define FE_CRUNCH_TOWARDZERO FE_CRUNCH_TOWARDZERO
++#define FE_TOWARDZERO FE_CRUNCH_TOWARDZERO
+ FE_CRUNCH_DOWNWARD = 0x800,
+ #define FE_CRUNCH_DOWNWARD FE_CRUNCH_DOWNWARD
++#define FE_DOWNWARD FE_CRUNCH_DOWNWARD
+ FE_CRUNCH_UPWARD = 0xc00
+ #define FE_CRUNCH_UPWARD FE_CRUNCH_UPWARD
++#define FE_UPWARD FE_CRUNCH_UPWARD
+ };
+
+
+diff -urN glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h
+--- glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h 2008-04-04 18:32:58.000000000 +1000
++++ glibc-2.6.1/ports/sysdeps/arm/eabi/fpu_control.h 2008-04-07 11:02:13.000000000 +1000
+@@ -20,6 +20,8 @@
+ #ifndef _FPU_CONTROL_H
+ #define _FPU_CONTROL_H
+
++#if 0
++
+ /* masking of interrupts */
+ #define _FPU_MASK_IM 0x00000100 /* invalid operation */
+ #define _FPU_MASK_ZM 0x00000200 /* divide by zero */
+@@ -45,6 +47,11 @@
+ #define _FPU_SETCW(cw) \
+ __asm__ __volatile__ ("mcr p10, 7, %0, cr1, cr0, 0" : : "r" (cw))
+
++#endif
++
+ /* CRUNCH SECTION */
+
++/* Type of the control word. */
++typedef unsigned int fpu_control_t;
++
+ /* DSPSC register: (from EP9312 User's Guide)
+@@ -69,19 +73,27 @@
+
+ /* masking of interrupts */
+ #define _FPU_CRUNCH_MASK_IM (1 << 5) /* invalid operation */
++#define _FPU_MASK_IM _FPU_CRUNCH_MASK_IM
+ #define _FPU_CRUNCH_MASK_ZM 0 /* divide by zero */
++#define _FPU_MASK_ZM _FPU_CRUNCH_MASK_ZM
+ #define _FPU_CRUNCH_MASK_OM (1 << 7) /* overflow */
++#define _FPU_MASK_OM _FPU_CRUNCH_MASK_OM
+ #define _FPU_CRUNCH_MASK_UM (1 << 8) /* underflow */
++#define _FPU_MASK_UM _FPU_CRUNCH_MASK_UM
+ #define _FPU_CRUNCH_MASK_PM (1 << 9) /* inexact */
++#define _FPU_MASK_PM _FPU_CRUNCH_MASK_PM
+ #define _FPU_CRUNCH_MASK_DM 0 /* denormalized operation */
++#undef _FPU_MASK_DM
+
+ /* Some bits in the FPSCR are not yet defined. They must be preserved when
+ modifying the contents. */
+ #define _FPU_CRUNCH_RESERVED 0x03000042
++#define _FPU_RESERVED _FPU_CRUNCH_RESERVED
+ #define _FPU_CRUNCH_DEFAULT 0x00b00000
++#define _FPU_DEFAULT _FPU_CRUNCH_DEFAULT
+ /* Default + exceptions enabled. */
+ #define _FPU_CRUNCH_IEEE (_FPU_CRUNCH_DEFAULT | 0x000003a0)
+-
++#define _FPU_IEEE _FPU_CRUNCH_IEEE
+
+ /* Macros for accessing the hardware control word. */
+ /* cfmvr64l %1, mvdx0 */
+@@ -103,6 +115,7 @@
+ : "=r" (cw), "=r" (__t1), "=r" (__t2) \
+ ); \
+ })
++#define _FPU_GETCW(cw) _FPU_CRUNCH_GETCW(cw)
+
+ /* cfmvr64l %1, mvdx0 */
+ /* cfmvr64h %2, mvdx0 */
+@@ -123,7 +136,7 @@
+ : "=r" (__t1), "=r" (__t2) : "r" (cw) \
+ ); \
+ })
+-
++#define _FPU_SETCW(cw) _FPU_CRUNCH_SETCW(cw)
+
+ /* Default control word set at startup. */
+ extern fpu_control_t __fpu_control;
diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch
new file mode 100644
index 0000000000..dcee3fad0a
--- /dev/null
+++ b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-fraiseexcpt.patch
@@ -0,0 +1,88 @@
+diff -urN glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c glibc-2.5/ports/sysdeps/arm/eabi-new/fraiseexcpt.c
+--- glibc-2.5/ports/sysdeps/arm/eabi/fraiseexcpt.c 2005-10-11 01:29:32.000000000 +1000
++++ glibc-2.5/ports/sysdeps/arm/eabi-new/fraiseexcpt.c 2008-04-14 17:21:09.000000000 +1000
+@@ -25,6 +25,7 @@
+ #include <ldsodefs.h>
+ #include <dl-procinfo.h>
+ #include <sysdep.h>
++#include <math.h>
+
+ int
+ feraiseexcept (int excepts)
+@@ -105,8 +105,74 @@
+
+ if (GLRO (dl_hwcap) & HWCAP_ARM_CRUNCH)
+ {
+- /* Unsupported, for now. */
+- return 1;
++ unsigned int dspsc;
++ const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX,
++ fp_min = FLT_MIN, fp_1e32 = 1.0e32f, fp_two = 2.0,
++ fp_three = 3.0, fp_inf = HUGE_VALF;
++
++ /* Raise exceptions represented by EXPECTS. But we must raise only
++ one signal at a time. It is important that if the overflow/underflow
++ exception and the inexact exception are given at the same time,
++ the overflow/underflow exception follows the inexact exception. After
++ each exception we read from the dspsc, to force the exception to be
++ raised immediately. */
++
++ /* There are additional complications because this file may be compiled
++ without CRUNCH support enabled, and we also can't assume that the
++ assembler has CRUNCH instructions enabled. To get around this we use the
++ generic coprocessor mnemonics and avoid asking GCC to put float values
++ in CRUNCH registers. */
++
++ /* First: invalid exception. */
++ if (FE_CRUNCH_INVALID & excepts)
++ /* (ZERO * INFINITY) */
++ __asm__ __volatile__ (
++ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */
++ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */
++ "cdp p4, 1, cr0, cr0, cr1, 0\n\t" /* cfmuls mvf0, mvf0, mvf1 */
++ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */
++ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */
++ : "m" (fp_zero), "m" (fp_inf)
++ : "s0", "s1");
++
++ /* Next: overflow. */
++ if (FE_CRUNCH_OVERFLOW & excepts)
++ /* There's no way to raise overflow without also raising inexact. */
++ __asm__ __volatile__ (
++ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */
++ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */
++ "cdp p4, 3, cr0, cr0, cr1, 4\n\t" /* cfadds mvf0, mvf0, mvf1 */
++ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */
++ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */
++ : "m" (fp_max), "m" (fp_1e32)
++ : "s0", "s1");
++
++ /* Next: underflow. */
++ if (FE_CRUNCH_UNDERFLOW & excepts)
++ /* (FLT_MIN * FLT_MIN) */
++ __asm__ __volatile__ (
++ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */
++ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */
++ "cdp p4, 1, cr0, cr0, cr1, 0\n\t" /* cfmul mvf0, mvf0, mvf1 */
++ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */
++ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */
++ : "m" (fp_min), "m" (fp_min)
++ : "s0", "s1");
++
++ /* Last: inexact. */
++ if (FE_CRUNCH_INEXACT & excepts)
++ /* There's no way to raise inexact without also raising overflow. */
++ __asm__ __volatile__ (
++ "ldc p4, cr0, %1\n\t" /* cflds mvf0, %1 */
++ "ldc p4, cr1, %2\n\t" /* cflds mvf1, %2 */
++ "cdp p4, 3, cr0, cr0, cr1, 4\n\t" /* cfadds mvf0, mvf0, mvf1 */
++ "cdp p4, 0, cr0, cr0, cr0, 7\n\t" /* cfmv32sc mvdx0, dspsc */
++ "mrc p5, 0, %0, cr0, cr0, 0" : "=r" (dspsc) /* cfmvr64l dspsc, mvdx0 */
++ : "m" (fp_max), "m" (fp_1e32)
++ : "s0", "s1");
++
++ /* Success. */
++ return 0;
+ }
+
+ /* Unsupported, so fail. */
diff --git a/recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch
new file mode 100644
index 0000000000..cf4ed6060b
--- /dev/null
+++ b/recipes/glibc/glibc-2.4/glibc-crunch-eabi-setjmp_longjmp.patch
@@ -0,0 +1,112 @@
+--- glibc-2.5/ports/sysdeps/arm/eabi/setjmp.S 2006-09-22 04:39:51.000000000 +1000
++++ glibc-2.5/ports/sysdeps/arm/eabi/setjmp.S 2007-05-24 13:31:20.000000000 +1000
+@@ -74,6 +74,34 @@
+ stcl p1, cr15, [r12], #8
+ Lno_iwmmxt:
+
++ tst a3, #HWCAP_ARM_CRUNCH
++ beq Lno_crunch
++
++ /* Save the call-preserved crunch registers. */
++ /* Following instructions are cfstrd cr10, [ip], #8 (etc.) */
++ /* stcl p4, cr4, [r12], #8 */
++ /* stcl p4, cr5, [r12], #8 */
++ /* stcl p4, cr6, [r12], #8 */
++ /* stcl p4, cr7, [r12], #8 */
++ stcl p4, cr8, [r12], #8
++ stcl p4, cr9, [r12], #8
++ stcl p4, cr10, [r12], #8
++ stcl p4, cr11, [r12], #8
++ stcl p4, cr12, [r12], #8
++ stcl p4, cr13, [r12], #8
++ stcl p4, cr14, [r12], #8
++ stcl p4, cr15, [r12], #8
++ /* Store the floating-point status register.
++ /* Following 6 instructions are FPU_CRUNCH_GETCW (r2) clob (r3, r4) */
++ /* mrc p5, 0, r3, cr0, cr0, 0 */
++ /* mrc p5, 0, r4, cr0, cr0, 1 */
++ /* cdp p4, 0, cr0, cr0, cr0, 7 */
++ /* mrc p5, 0, r2, cr0, cr0, 0 */
++ /* mcr p5, 0, r3, cr0, cr0, 0 */
++ /* mcr p5, 0, r4, cr0, cr0, 1 */
++ /* str r2, [ip], #4 */
++Lno_crunch:
++
+ /* Make a tail call to __sigjmp_save; it takes the same args. */
+ B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
+
+--- glibc-2.5/ports/sysdeps/arm/eabi/__longjmp.S 2006-09-22 04:39:51.000000000 +1000
++++ glibc-2.5/ports/sysdeps/arm/eabi/__longjmp.S 2007-05-24 13:31:23.000000000 +1000
+@@ -76,6 +76,34 @@
+ ldcl p1, cr15, [r12], #8
+ Lno_iwmmxt:
+
++ tst a2, #HWCAP_ARM_CRUNCH
++ beq Lno_crunch
++
++ /* Restore the call-preserved crunch registers. */
++ /* Following instructions are cfldrd cr10, [ip], #8 (etc.) */
++ /* ldcl p4, cr4, [r12], #8 */
++ /* ldcl p4, cr5, [r12], #8 */
++ /* ldcl p4, cr6, [r12], #8 */
++ /* ldcl p4, cr7, [r12], #8 */
++ ldcl p4, cr8, [r12], #8
++ ldcl p4, cr9, [r12], #8
++ ldcl p4, cr10, [r12], #8
++ ldcl p4, cr11, [r12], #8
++ ldcl p4, cr12, [r12], #8
++ ldcl p4, cr13, [r12], #8
++ ldcl p4, cr14, [r12], #8
++ ldcl p4, cr15, [r12], #8
++ /* Restore the floating-point status register. */
++ ldr r1, [ip], #4
++ /* Following 6 instructions are FPU_CRUNCH_SETCW (r1) clob (r2, r3). */
++ /* mrc p5, 0, r2, cr0, cr0, 0 */
++ /* mrc p5, 0, r3, cr0, cr0, 1 */
++ /* mcr p5, 0, r1, cr0, cr0, 0 */
++ /* cdp p4, 1, cr0, cr0, cr0, 7 */
++ /* mcr p5, 0, r2, cr0, cr0, 0 */
++ /* mcr p5, 0, r3, cr0, cr0, 1 */
++Lno_crunch:
++
+ DO_RET(lr)
+
+ #ifdef IS_IN_rtld
+--- glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/sysdep.h 2006-09-22 04:39:51.000000000 +1000
++++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/sysdep.h 2007-05-24 12:59:03.000000000 +1000
+@@ -48,6 +48,7 @@
+ #define HWCAP_ARM_EDSP 128
+ #define HWCAP_ARM_JAVA 256
+ #define HWCAP_ARM_IWMMXT 512
++#define HWCAP_ARM_CRUNCH 1024
+
+ #ifdef __ASSEMBLER__
+
+--- glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2007-07-02 13:20:36.000000000 +1000
++++ glibc-2.5/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2007-07-02 13:23:19.000000000 +1000
+@@ -47,12 +47,12 @@
+ #if !defined PROCINFO_DECL && defined SHARED
+ ._dl_arm_cap_flags
+ #else
+-PROCINFO_CLASS const char _dl_arm_cap_flags[10][10]
++PROCINFO_CLASS const char _dl_arm_cap_flags[11][10]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+ "swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp",
+- "java", "iwmmxt",
+