summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2006-01-31 23:31:32 +0000
committerPeter S. Mazinger <ps.m@gmx.net>2006-01-31 23:31:32 +0000
commitf34cf7cc3ba6fa0de8715cee49b0c6c2da042880 (patch)
tree0a8dde761fd92a5048685d2accff650d695b8b46
parent7bde4a3e311f868bc9da067d50b1ea3b1a14cca5 (diff)
s:THUMB_INTERWORK:USE_BX:, thx Khem Raj
-rw-r--r--ldso/ldso/arm/dl-startup.h12
-rw-r--r--libc/sysdeps/linux/arm/clone.S2
-rw-r--r--libc/sysdeps/linux/arm/vfork.S4
3 files changed, 13 insertions, 5 deletions
diff --git a/ldso/ldso/arm/dl-startup.h b/ldso/ldso/arm/dl-startup.h
index f40d47f48..43985d002 100644
--- a/ldso/ldso/arm/dl-startup.h
+++ b/ldso/ldso/arm/dl-startup.h
@@ -1,9 +1,13 @@
/* vi: set sw=4 ts=4: */
/*
* Architecture specific code used by dl-startup.c
- * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
+#include <features.h>
+
#if !defined(__thumb__)
__asm__(
" .text\n"
@@ -41,7 +45,7 @@ __asm__(
" ldr r0, .L_FINI_PROC\n"
" ldr r0, [sl, r0]\n"
" @ jump to the user_s entry point\n"
-#if defined(__THUMB_INTERWORK__)
+#if defined(__USE_BX__)
" bx r6\n"
#else
" mov pc, r6\n"
@@ -107,7 +111,11 @@ __asm__(
" ldr r0, .L_FINI_PROC\n"
" ldr r0, [r7, r0]\n"
" @ jump to the user_s entry point\n"
+#if defined(__USE_BX__)
" bx r6\n"
+#else
+ " mov pc, r6\n"
+#endif
"\n\n"
".L_GET_GOT:\n"
" .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4\n"
diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S
index 66848e548..a5a847d1e 100644
--- a/libc/sysdeps/linux/arm/clone.S
+++ b/libc/sysdeps/linux/arm/clone.S
@@ -52,7 +52,7 @@ clone:
DO_CALL (clone)
movs a1, a1
blt __error
-#if defined(__THUMB_INTERWORK__)
+#if defined(__USE_BX__)
bxne lr
#else
movne pc, lr
diff --git a/libc/sysdeps/linux/arm/vfork.S b/libc/sysdeps/linux/arm/vfork.S
index 486a7e8e4..607ffe5a6 100644
--- a/libc/sysdeps/linux/arm/vfork.S
+++ b/libc/sysdeps/linux/arm/vfork.S
@@ -26,7 +26,7 @@ __vfork:
#ifdef __NR_vfork
DO_CALL (vfork)
cmn r0, #4096
-#if defined(__THUMB_INTERWORK__)
+#if defined(__USE_BX__)
bxcc lr
#else
movcc pc, lr
@@ -43,7 +43,7 @@ __vfork:
cmn r0, #4096
/* Syscall worked. Return to child/parent */
-#if defined(__THUMB_INTERWORK__)
+#if defined(__USE_BX__)
bxcc lr
#else
movcc pc, lr