about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/s390
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390')
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h14
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h15
4 files changed, 33 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
index 3c45a30778..da461a57a0 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
@@ -23,5 +23,8 @@ libc {
     # v*
     versionsort64;
   }
+  GLIBC_2.3.3 {
+    posix_fadvise64;
+  }
 }
 
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
index 95cfd21857..d759e4a664 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
@@ -69,6 +69,17 @@
 #define PSEUDO_END_NOERRNO(name)					      \
   END (name)
 
+#undef PSEUDO_ERRVAL
+#define	PSEUDO_ERRVAL(name, syscall_name, args)				      \
+  .text;                                                                      \
+  ENTRY (name)							              \
+    DO_CALL (syscall_name, args);					      \
+    lcr %r2,%r2
+
+#undef PSEUDO_END_ERRVAL
+#define PSEUDO_END_ERRVAL(name)						      \
+  END (name)
+
 #ifndef PIC
 # define SYSCALL_ERROR_LABEL 0f
 # define SYSCALL_ERROR_HANDLER \
@@ -156,6 +167,9 @@
 #define ret_NOERRNO							      \
     br      14
 
+#define ret_ERRVAL							      \
+    br      14
+
 #endif /* __ASSEMBLER__ */
 
 #undef INLINE_SYSCALL
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
index c2bf5c3307..e114994c0d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
@@ -10,7 +10,7 @@ getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 ftruncate	-	ftruncate	2	__ftruncate	ftruncate ftruncate64 __ftruncate64
 truncate	-	truncate	2	truncate	truncate64
 getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
-posix_fadvise64	-	fadvise64	4	posix_fadvise64	posix_fadvise
+posix_fadvise64	-	fadvise64	Vi:iiii	posix_fadvise64	posix_fadvise
 setrlimit	-	setrlimit	2	__setrlimit	setrlimit setrlimit64
 vfork		-	vfork		0	__vfork		vfork
 
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
index 9abc06e229..2fb6e7a0cf 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
@@ -83,6 +83,18 @@
   SYSCALL_ERROR_HANDLER;						      \
   END (name)
 
+#undef PSEUDO_ERRVAL
+#define	PSEUDO_ERRVAL(name, syscall_name, args)				      \
+  .text;								      \
+  ENTRY (name)								      \
+    DO_CALL (syscall_name, args);					      \
+    lcgr %r2,%r2
+
+#undef PSEUDO_END_ERRVAL
+#define PSEUDO_END_ERRVAL(name)						      \
+  SYSCALL_ERROR_HANDLER;						      \
+  END (name)
+
 #ifndef PIC
 # define SYSCALL_ERROR_LABEL syscall_error
 # define SYSCALL_ERROR_HANDLER
@@ -158,6 +170,9 @@
 #define ret_NOERRNO							      \
     br	    14
 
+#define ret_ERRVAL							      \
+    br	    14
+
 #endif /* __ASSEMBLER__ */
 
 #undef INLINE_SYSCALL