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/mmap_internal.h32
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/mmap.S74
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S81
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/mmap.S78
4 files changed, 32 insertions, 233 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/mmap_internal.h b/sysdeps/unix/sysv/linux/s390/mmap_internal.h
new file mode 100644
index 0000000000..2b11ce4e68
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/mmap_internal.h
@@ -0,0 +1,32 @@
+/* mmap - map files or devices into memory.  Linux/s390 version.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef MMAP_S390_INTERNAL_H
+# define MMAP_S390_INTERNAL_H
+
+#define MMAP_CALL(__nr, __addr, __len, __prot, __flags, __fd, __offset)	\
+  ({									\
+    long int __args[6] = { (long int) (__addr), (long int) (__len),	\
+			   (long int) (__prot), (long int) (__flags),	\
+			   (long int) (__fd), (long int) (__offset) };	\
+    INLINE_SYSCALL_CALL (__nr, __args);					\
+  })
+
+#include_next <mmap_internal.h>
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S b/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S
deleted file mode 100644
index 99b56ed392..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/mmap.S
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define EINVAL	22
-
-	.text
-ENTRY(__mmap)
-	/* Save registers and setup stack frame.  */
-	stm     %r6,%r15,24(%r15)
-	cfi_offset (%r15, -36)
-	cfi_offset (%r14, -40)
-	cfi_offset (%r13, -44)
-	cfi_offset (%r12, -48)
-	cfi_offset (%r11, -52)
-	cfi_offset (%r10, -56)
-	cfi_offset (%r9, -60)
-	cfi_offset (%r8, -64)
-	cfi_offset (%r7, -68)
-	cfi_offset (%r6, -72)
-	lr      %r1,%r15
-	ahi     %r15,-120               /* buy stack space */
-	cfi_adjust_cfa_offset (120)
-	st      %r1,0(%r15)             /* store back chain */
-
-	/* Store parameters on stack, because mmap2
-	 * takes only one parameter: a pointer to the parameter area
-	 */
-	st      %r6,0x70(%r15)          /* Store 'fd'.      */
-	st      %r5,0x6C(%r15)          /* Store 'flags'.   */
-	st      %r4,0x68(%r15)          /* Store 'prot'.    */
-	st      %r3,0x64(%r15)          /* Store 'length'.  */
-	st      %r2,0x60(%r15)          /* Store 'start'.   */
-	l       %r1,216(%r15)           /* Load offset.     */
-
-	tml     %r1,0x0fff              /* Offset page aligned ?  */
-	lhi     %r2,-EINVAL
-	jnz     1f                      /* No -> EINVAL.  */
-	srl     %r1,12                  /* mmap2 takes the offset in pages.  */
-	st      %r1,0x74(%r15)          /* Store page offset.  */
-	la      %r2,0x60(%r15)          /* Load address of parameter list.  */
-	svc     SYS_ify(mmap2)          /* Do the system call trap.  */
-
-1:	l       %r15,0(%r15)            /* Load back chain.  */
-	cfi_adjust_cfa_offset (-120)
-	lm      %r6,%r15,24(%r15)       /* Load registers.  */
-
-	/* check gpr 2 for error */
-	lhi     %r0,-4096
-	clr     %r2,%r0
-	jnl     SYSCALL_ERROR_LABEL
-
-	/* Successful; return the syscall's value.  */
-	br      %r14
-
-PSEUDO_END (__mmap)
-
-weak_alias (__mmap, mmap)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S b/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S
deleted file mode 100644
index f1825782a4..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define EINVAL	22
-#define ENOSYS	38
-
-	.text
-ENTRY(__mmap64)
-	/* Save registers and setup stack frame.  */
-	stm	%r6,%r15,24(%r15)
-	cfi_offset (%r15, -36)
-	cfi_offset (%r14, -40)
-	cfi_offset (%r13, -44)
-	cfi_offset (%r12, -48)
-	cfi_offset (%r11, -52)
-	cfi_offset (%r10, -56)
-	cfi_offset (%r9, -60)
-	cfi_offset (%r8, -64)
-	cfi_offset (%r7, -68)
-	cfi_offset (%r6, -72)
-	lr	%r1,%r15
-	ahi	%r15,-120		/* Buy stack space.   */
-	cfi_adjust_cfa_offset (120)
-	st	%r1,0(%r15)		/* Store back chain.  */
-
-	/* Store parameters on stack, because mmap2
-	 * takes only one parameter: a pointer to the parameter area.  */
-	st	%r6,0x70(%r15)		/* Store 'fd'.	    */
-	st	%r5,0x6C(%r15)		/* Store 'flags'.   */
-	st	%r4,0x68(%r15)		/* Store 'prot'.    */
-	st	%r3,0x64(%r15)		/* Store 'length'.  */
-	st	%r2,0x60(%r15)		/* Store 'start'.   */
-
-	lm	%r0,%r1,216(%r15)	/* Load 64 bit offset.	*/
-	tml	%r1,0x0fff		/* Offset page aligned ?  */
-	jnz	2f			/* No -> EINVAL.  */
-	srdl	%r0,12			/* mmap2 takes the offset in pages.  */
-	ltr	%r0,%r0			/* Offset > 2^44 ?  */
-	jnz	2f
-	st	%r1,0x74(%r15)		/* Store page offset.  */
-
-	la	%r2,0x60(%r15)		/* Load address of parameter list.  */
-	svc	SYS_ify(mmap2)		/* Do the system call trap.  */
-
-	l	%r15,0(%r15)		/* Load back chain.  */
-	cfi_adjust_cfa_offset (-120)
-	lm	%r6,%r15,24(%r15)	/* Load registers.  */
-
-	/* Check gpr 2 for error.  */
-	lhi	%r0,-4096
-	clr	%r2,%r0
-	jnl	SYSCALL_ERROR_LABEL
-
-	/* Successful; return the syscall's value.  */
-	br	%r14
-
-2:	lhi	%r2,-EINVAL
-	l	%r15,0(%r15)		/* Load back chain.  */
-	lm	%r6,%r15,24(%r15)	/* Load registers.  */
-	j	SYSCALL_ERROR_LABEL
-
-PSEUDO_END (__mmap64)
-
-weak_alias (__mmap64, mmap64)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S
deleted file mode 100644
index 06d31bbb92..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Wrapper around mmap system call.  64 bit S/390 version.
-   Copyright (C) 2001-2017 Free Software Foundation, Inc.
-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define EINVAL	22
-
-        .text
-
-ENTRY(__mmap)
-	/* Save registers and setup stack frame.  */
-        stmg    %r6,%r15,48(%r15)
-	cfi_offset (%r15,-40)
-	cfi_offset (%r14,-48)
-	cfi_offset (%r13,-56)
-	cfi_offset (%r12,-64)
-	cfi_offset (%r11,-72)
-	cfi_offset (%r10,-80)
-	cfi_offset (%r9,-88)
-	cfi_offset (%r8,-96)
-	cfi_offset (%r7,-104)
-	cfi_offset (%r6,-112)
-        lgr     %r1,%r15
-        lg      %r0,8(%r15)             /* Load eos.  */
-        aghi    %r15,-208               /* Buy stack space.  */
-	cfi_adjust_cfa_offset (208)
-        stg     %r1,0(%r15)             /* Store back chain.  */
-        stg     %r0,8(%r15)             /* Store eos.  */
-
-        /* Store parameters on stack, because old_mmap
-           takes only one parameter: a pointer to the parameter area.  */
-        mvc     200(8,%r15),368(%r15)   /* Move 'offset'.  */
-        lgfr    %r6,%r6
-        stg     %r6,192(%r15)           /* Store 'fd'.  */
-        lgfr    %r5,%r5
-        stg     %r5,184(%r15)           /* Store 'flags'.  */
-        lgfr    %r4,%r4
-        stg     %r4,176(%r15)           /* Store 'prot'.  */
-        stg     %r3,168(%r15)           /* Store 'length'.  */
-        stg     %r2,160(%r15)           /* Store 'start'.  */
-
-        la      %r2,160(%r15)           /* Load address of parameter list.  */
-        /* Do the system call trap.  */
-        svc     SYS_ify(mmap)
-
-        lg      %r15,0(%r15)            /* Load back chain.  */
-	cfi_adjust_cfa_offset (-208)
-        lmg     %r6,%r15,48(%r15)       /* Load registers.  */
-
-        /* Check gpr 2 for error.  */
-        lghi    %r0,-4096
-        clgr    %r2,%r0
-        jgnl    SYSCALL_ERROR_LABEL
-
-        /* Successful; return the syscall's value.  */
-        br      %r14
-
-PSEUDO_END (__mmap)
-
-weak_alias (__mmap, mmap)
-weak_alias (__mmap, mmap64)
-weak_alias (__mmap, __mmap64)