This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch siddhesh/s390-lll created. glibc-2.16-ports-merge-870-gde49b88


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, siddhesh/s390-lll has been created
        at  de49b88510fc3a2ff2568fc0dca5936398570ab0 (commit)

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=de49b88510fc3a2ff2568fc0dca5936398570ab0

commit de49b88510fc3a2ff2568fc0dca5936398570ab0
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Wed Dec 12 20:58:37 2012 +0530

    [s390] Replace lll_futex_* assembly code with INTERNAL_SYSCALL

diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index b950687..5fdcbc9 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,14 @@
+2012-12-12  Siddhesh Poyarekar  <siddhesh@redhat.com>
+
+	* sysdeps/unix/sysv/linux/s390/lowlevellock.h (SYS_futex):
+	Remove definition.
+	(lll_futex_timed_wait): Replace assembly code with
+	INTERNAL_SYSCALL.
+	(lll_futex_timed_wait_bitset): Likewise.
+	(lll_futex_wake): Likewise.
+	(lll_futex_requeue): Likewise.
+	(lll_futex_wake_unlock): Likewise.
+
 2012-12-08  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
 	* sysdeps/unix/sysv/linux/s390/jmp-unwind.c (_longjmp_unwind):
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
index 0b7110f..e72d47e 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
@@ -25,7 +25,6 @@
 #include <atomic.h>
 #include <kernel-features.h>
 
-#define SYS_futex		238
 #define FUTEX_WAIT		0
 #define FUTEX_WAKE		1
 #define FUTEX_REQUEUE		3
@@ -76,60 +75,35 @@
 #define lll_futex_wait(futex, val, private) \
   lll_futex_timed_wait (futex, val, NULL, private)
 
-#define lll_futex_timed_wait(futex, val, timespec, private) \
+#define lll_futex_timed_wait(futexp, val, timespec, private) \
   ({									      \
-    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \
-    register unsigned long int __r3 asm ("3")				      \
-      = __lll_private_flag (FUTEX_WAIT, private);			      \
-    register unsigned long int __r4 asm ("4") = (unsigned long int) (val);    \
-    register unsigned long int __r5 asm ("5") = (unsigned long int)(timespec);\
-    register unsigned long int __result asm ("2");			      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
 									      \
-    __asm __volatile ("svc %b1"						      \
-		      : "=d" (__result)					      \
-		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \
-			"d" (__r4), "d" (__r5)				      \
-		      : "cc", "memory" );				      \
-    __result;								      \
+    INTERNAL_SYSCALL (futex, __err, 4, (futexp),			      \
+		      __lll_private_flag (FUTEX_WAIT, private),		      \
+		      (val), (timespec));				      \
   })
 
 #define lll_futex_timed_wait_bitset(futexp, val, timespec, clockbit, private) \
   ({									      \
-    register unsigned long int __r2 asm ("2") = (unsigned long int) (futexp); \
-    register unsigned long int __r3 asm ("3")				      \
-      = __lll_private_flag ((FUTEX_WAIT_BITSET | clockbit), private);	      \
-    register unsigned long int __r4 asm ("4") = (long int) (val);	      \
-    register unsigned long int __r5 asm ("5") = (long int) (timespec);	      \
-    register unsigned long int __r6 asm ("6") = (unsigned long int) (NULL);   \
-    register unsigned long int __r7 asm ("7")				      \
-      = (unsigned int) (FUTEX_BITSET_MATCH_ANY);			      \
-    register unsigned long __result asm ("2");				      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    int __op = FUTEX_WAIT_BITSET | clockbit;				      \
 									      \
-    __asm __volatile ("svc %b1"						      \
-		      : "=d" (__result)					      \
-		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \
-			"d" (__r4), "d" (__r5), "d" (__r6), "d" (__r7)	      \
-		      : "cc", "memory" );				      \
-    __result;								      \
+    INTERNAL_SYSCALL (futex, __err, 6, (futexp),			      \
+		      __lll_private_flag (__op, private),		      \
+		      (val), (timespec), NULL /* Unused.  */, 		      \
+		      FUTEX_BITSET_MATCH_ANY);				      \
   })
 
-
-#define lll_futex_wake(futex, nr, private) \
+#define lll_futex_wake(futexp, nr, private) \
   ({									      \
-    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \
-    register unsigned long int __r3 asm ("3")				      \
-      = __lll_private_flag (FUTEX_WAKE, private);			      \
-    register unsigned long int __r4 asm ("4") = (unsigned long int) (nr);     \
-    register unsigned long int __result asm ("2");			      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
 									      \
-    __asm __volatile ("svc %b1"						      \
-		      : "=d" (__result)					      \
-		      : "i" (SYS_futex), "0" (__r2), "d" (__r3), "d" (__r4)   \
-		      : "cc", "memory" );				      \
-    __result;								      \
+    INTERNAL_SYSCALL (futex, __err, 4, (futexp),			      \
+		      __lll_private_flag (FUTEX_WAKE, private),		      \
+		      (nr), 0);						      \
   })
 
-
 #define lll_robust_dead(futexv, private) \
   do									      \
     {									      \
@@ -142,48 +116,30 @@
 
 
 /* Returns non-zero if error happened, zero if success.  */
-#define lll_futex_requeue(futex, nr_wake, nr_move, mutex, val, private) \
+#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({									      \
-    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \
-    register unsigned long int __r3 asm ("3")				      \
-      = __lll_private_flag (FUTEX_CMP_REQUEUE, private);		      \
-    register unsigned long int __r4 asm ("4") = (long int) (nr_wake);	      \
-    register unsigned long int __r5 asm ("5") = (long int) (nr_move);	      \
-    register unsigned long int __r6 asm ("6") = (unsigned long int) (mutex);  \
-    register unsigned long int __r7 asm ("7") = (int) (val);		      \
-    register unsigned long __result asm ("2");				      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    long int __ret;							      \
 									      \
-    __asm __volatile ("svc %b1"						      \
-		      : "=d" (__result)					      \
-		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \
-			"d" (__r4), "d" (__r5), "d" (__r6), "d" (__r7)	      \
-		      : "cc", "memory" );				      \
-    __result > -4096UL;							      \
+    __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp),		      \
+			      __lll_private_flag (FUTEX_CMP_REQUEUE, private),\
+			      (nr_wake), (nr_move), (mutex), (val));	      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err);				      \
   })
 
-
 /* Returns non-zero if error happened, zero if success.  */
-#define lll_futex_wake_unlock(futex, nr_wake, nr_wake2, futex2, private) \
+#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
   ({									      \
-    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \
-    register unsigned long int __r3 asm ("3")				      \
-      = __lll_private_flag (FUTEX_WAKE_OP, private);			      \
-    register unsigned long int __r4 asm ("4") = (long int) (nr_wake);	      \
-    register unsigned long int __r5 asm ("5") = (long int) (nr_wake2);	      \
-    register unsigned long int __r6 asm ("6") = (unsigned long int) (futex2); \
-    register unsigned long int __r7 asm ("7")				      \
-      = (int) FUTEX_OP_CLEAR_WAKE_IF_GT_ONE;				      \
-    register unsigned long __result asm ("2");				      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    long int __ret;							      \
 									      \
-    __asm __volatile ("svc %b1"						      \
-		      : "=d" (__result)					      \
-		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \
-			"d" (__r4), "d" (__r5), "d" (__r6), "d" (__r7)	      \
-		      : "cc", "memory" );				      \
-    __result > -4096UL;							      \
+    __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp),		      \
+			      __lll_private_flag (FUTEX_WAKE_OP, private),    \
+			      (nr_wake), (nr_wake2), (futexp2),		      \
+			      FUTEX_OP_CLEAR_WAKE_IF_GT_ONE);		      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err);				      \
   })
 
-
 #define lll_compare_and_swap(futex, oldval, newval, operation) \
   do {									      \
     __typeof (futex) __futex = (futex);					      \

-----------------------------------------------------------------------


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]