about summary refs log tree commit diff
path: root/nptl/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps')
-rw-r--r--nptl/sysdeps/s390/tls.h8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/sem_post.c9
4 files changed, 14 insertions, 6 deletions
diff --git a/nptl/sysdeps/s390/tls.h b/nptl/sysdeps/s390/tls.h
index fd43564762..9b186f657f 100644
--- a/nptl/sysdeps/s390/tls.h
+++ b/nptl/sysdeps/s390/tls.h
@@ -136,13 +136,13 @@ typedef struct
 
 /* Access to data in the thread descriptor is easy.  */
 #define THREAD_GETMEM(descr, member) \
-  THREAD_SELF->member
+  descr->member
 #define THREAD_GETMEM_NC(descr, member, idx) \
-  THREAD_SELF->member[idx]
+  descr->member[idx]
 #define THREAD_SETMEM(descr, member, value) \
-  THREAD_SELF->member = (value)
+  descr->member = (value)
 #define THREAD_SETMEM_NC(descr, member, idx, value) \
-  THREAD_SELF->member[idx] = (value)
+  descr->member[idx] = (value)
 
 #endif /* __ASSEMBLER__ */
 
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c b/nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
index e41c12f8d2..3e81475888 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c
@@ -34,7 +34,7 @@ _longjmp_unwind (jmp_buf env, int val)
 # define fptr __pthread_cleanup_upto
 #endif
 
-  unsigned int local_var;
+  unsigned char local_var;
 
   if (fptr != NULL)
     fptr (env, &local_var);
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c
index 42ed830786..bc501c7ee4 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.c
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <sysdep.h>
 #include <lowlevellock.h>
+#include <sys/time.h>
 
 
 void
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
index 4c26857f50..df64c03ba6 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
@@ -30,9 +30,16 @@ __new_sem_post (sem_t *sem)
 {
   int oldval;
   int newval;
+  int err;
 
   lll_compare_and_swap ((int *) sem, oldval, newval, "lr %2,%1; ahi %2,1");
-  lll_futex_wake ((int *) sem, newval);
+  err = lll_futex_wake(((int *) sem), newval);
+  if (err != 0)
+    {
+      __set_errno(-err);
+      return -1;
+    }
+  return 0;
 }
 versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)