summaryrefslogtreecommitdiff
path: root/recipes/eglibc/files
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2009-10-28 13:06:13 -0700
committerKhem Raj <raj.khem@gmail.com>2009-10-28 13:07:02 -0700
commitbd449d860fac2948f0d9109f1cdefd0d2d4a5200 (patch)
tree7b209003c5f0a440ab259b75f437e58da8fb00e3 /recipes/eglibc/files
parent2715d18f8602baa82b43fc545926fb501394ed8e (diff)
eglibc: Forward port armv4t-interworking patch
* This patch is needed to support armv4t targets. Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'recipes/eglibc/files')
-rw-r--r--recipes/eglibc/files/armv4t-interworking.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/recipes/eglibc/files/armv4t-interworking.patch b/recipes/eglibc/files/armv4t-interworking.patch
new file mode 100644
index 0000000000..55ee8565d7
--- /dev/null
+++ b/recipes/eglibc/files/armv4t-interworking.patch
@@ -0,0 +1,53 @@
+Index: libc/ports/sysdeps/arm/memcpy.S
+===================================================================
+--- libc.orig/ports/sysdeps/arm/memcpy.S 2009-09-03 16:12:00.000000000 -0700
++++ libc/ports/sysdeps/arm/memcpy.S 2009-10-28 12:51:22.000000000 -0700
+@@ -130,7 +130,12 @@ ENTRY(memcpy)
+ strcsb r4, [r0], #1
+ strcsb ip, [r0]
+
++#if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
++ ldmfd sp!, {r0, r4, lr}
++ bx lr
++#else
+ ldmfd sp!, {r0, r4, pc}
++#endif
+
+ 9: rsb ip, ip, #4
+ cmp ip, #2
+Index: libc/ports/sysdeps/arm/memmove.S
+===================================================================
+--- libc.orig/ports/sysdeps/arm/memmove.S 2009-09-03 16:12:00.000000000 -0700
++++ libc/ports/sysdeps/arm/memmove.S 2009-10-28 12:51:22.000000000 -0700
+@@ -144,7 +144,12 @@ ENTRY(memmove)
+ strneb r3, [r0, #-1]!
+ strcsb r4, [r0, #-1]!
+ strcsb ip, [r0, #-1]
++#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)
++ ldmfd sp!, {r0, r4, lr}
++ bx lr
++#else
+ ldmfd sp!, {r0, r4, pc}
++#endif
+
+ 9: cmp ip, #2
+ ldrgtb r3, [r1, #-1]!
+Index: libc/ports/sysdeps/unix/sysv/linux/arm/clone.S
+===================================================================
+--- libc.orig/ports/sysdeps/unix/sysv/linux/arm/clone.S 2009-09-03 16:12:04.000000000 -0700
++++ libc/ports/sysdeps/unix/sysv/linux/arm/clone.S 2009-10-28 12:51:22.000000000 -0700
+@@ -96,8 +96,14 @@ ENTRY(__clone)
+ #endif
+ @ pick the function arg and call address off the stack and execute
+ ldr r0, [sp, #4]
++#if defined(__ARM_ARCH_V4T__) && defined(__THUMB_INTERWORK__)
++ ldr ip, [sp], #8
++ mov lr, pc
++ bx ip
++#else
+ mov lr, pc
+ ldr pc, [sp], #8
++#endif
+
+ @ and we are done, passing the return value through r0
+ b PLTJMP(HIDDEN_JUMPTARGET(_exit))