This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
ARM linuxthreads fix
- From: Daniel Jacobowitz <drow at false dot org>
- To: libc-ports at sourceware dot org
- Date: Thu, 2 Mar 2006 10:24:42 -0500
- Subject: ARM linuxthreads fix
I appear to have fat-fingered the cancellation wrappers when I was last
working on them. This patch restores an arm-linux LinuxThreads
configuration.
--
Daniel Jacobowitz
CodeSourcery
2006-03-02 Daniel Jacobowitz <dan@codesourcery.com>
* sysdeps/unix/sysv/linux/arm/linuxthreads/sysdep-cancel.h
(PSEUDO): Inline correct versions of PSEUDO_RET_MOV and MAYBE_SAVE_LR.
(PSEUDO_RET_MOV, MAYBE_SAVE_LR): Don't define.
Index: glibc/ports/sysdeps/unix/sysv/linux/arm/linuxthreads/sysdep-cancel.h
===================================================================
--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/linuxthreads/sysdep-cancel.h 2005-11-16 13:08:53.000000000 -0500
+++ glibc/ports/sysdeps/unix/sysv/linux/arm/linuxthreads/sysdep-cancel.h 2006-03-01 14:52:13.000000000 -0500
@@ -50,9 +50,10 @@
bne .Lpseudo_cancel; \
DO_CALL (syscall_name, args); \
cmn r0, $4096; \
- PSEUDO_RET_MOV; \
+ RETINSTR(cc, lr); \
+ b PLTJMP(SYSCALL_ERROR); \
.Lpseudo_cancel: \
- MAYBE_SAVE_LR; \
+ str lr, [sp, $-4]!; \
DOCARGS_##args; /* save syscall args around CENABLE. */ \
CENABLE; \
mov ip, r0; /* put mask in safe place. */ \
@@ -108,11 +109,6 @@ extern int __local_multiple_threads attr
ldr ip, =__local_multiple_threads; \
ldr ip, [ip]; \
teq ip, #0;
-# define MAYBE_SAVE_LR \
- str lr, [sp, $-4]!;
-# define PSEUDO_RET_MOV \
- RETINSTR(cc, lr); \
- b PLTJMP(SYSCALL_ERROR)
# define PSEUDO_PROLOGUE
# else
# define SINGLE_THREAD_P \
@@ -122,8 +118,6 @@ extern int __local_multiple_threads attr
teq ip, #0;
# define PSEUDO_PROLOGUE \
1: .word __local_multiple_threads - 2f - 8;
-# define MAYBE_SAVE_LR /* lr already saved */
-# define PSEUDO_RET_MOV PSEUDO_RET
# endif
# endif