aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2000-12-05 09:29:23 +0000
committerAndreas Jaeger <aj@suse.de>2000-12-05 09:29:23 +0000
commite22669a31293a1ed284a291e8248a405daefe27b (patch)
treef0e0be013ea58770e95868039cf60bac00c4b3f6
parentcf3141a59dc73a8082a701c8f16842adab4ab09a (diff)
downloadglibc-e22669a31293a1ed284a291e8248a405daefe27b.tar
glibc-e22669a31293a1ed284a291e8248a405daefe27b.tar.gz
glibc-e22669a31293a1ed284a291e8248a405daefe27b.tar.bz2
glibc-e22669a31293a1ed284a291e8248a405daefe27b.zip
Update.
2000-12-05 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/unix/sysv/linux/s390/mmap64.S: Use mmap if mmap2 isn't available.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/s390/mmap64.S96
2 files changed, 53 insertions, 48 deletions
diff --git a/ChangeLog b/ChangeLog
index 9a1b81c4aa..760dcec2bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-12-05 Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+ * sysdeps/unix/sysv/linux/s390/mmap64.S: Use mmap if mmap2 isn't
+ available.
+
2000-12-05 Andreas Jaeger <aj@suse.de>
* nss/test-netdb.c: Mark local functions as static to avoid
diff --git a/sysdeps/unix/sysv/linux/s390/mmap64.S b/sysdeps/unix/sysv/linux/s390/mmap64.S
index 96b2af5741..b42ff6f22c 100644
--- a/sysdeps/unix/sysv/linux/s390/mmap64.S
+++ b/sysdeps/unix/sysv/linux/s390/mmap64.S
@@ -9,93 +9,93 @@
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
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Boston, MA 02111-1307, USA. */
#include <sysdep.h>
-#define EINVAL 22
-#define ENOSYS 38
+#define EINVAL 22
+#define ENOSYS 38
.text
ENTRY(__mmap64)
/* Save registers and setup stack frame. */
- stm %r6,%r15,24(%r15)
- lr %r1,%r15
- ahi %r15,-120 /* Buy stack space. */
- st %r1,0(%r15) /* Store back chain. */
+ stm %r6,%r15,24(%r15)
+ lr %r1,%r15
+ ahi %r15,-120 /* Buy stack space. */
+ st %r1,0(%r15) /* Store back chain. */
/* Store parameters on stack, because mmap2 and old_mmap
* take 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'. */
+ 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'. */
#ifdef __NR_mmap2
- 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. */
+ 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. */
+ la %r2,0x60(%r15) /* Load address of parameter list. */
+ svc SYS_ify(mmap2) /* Do the system call trap. */
#ifndef __ASSUME_MMAP2_SYSCALL
- chi %r0,-ENOSYS
+ chi %r0,-ENOSYS
je 1f
#endif
- l %r15,0(%r15) /* Load back chain. */
- lm %r6,%r15,24(%r15) /* Load registers. */
+ l %r15,0(%r15) /* Load back chain. */
+ lm %r6,%r15,24(%r15) /* Load registers. */
/* Check gpr 2 for error. */
- lhi %r0,-4096
- clr %r2,%r0
- jnl SYSCALL_ERROR_LABEL
+ lhi %r0,-4096
+ clr %r2,%r0
+ jnl SYSCALL_ERROR_LABEL
/* Successful; return the syscall's value. */
- br %r14
+ br %r14
#endif
#if !defined __ASSUME_MMAP2_SYSCALL || !defined __NR_mmap2
-1: lm %r0,%r1,216(%r15) /* Load 64 bit offset. */
- st %r1,0x74(%r15) /* Store lower word of offset. */
- ltr %r0,%r0 /* Offset > 2^32 ? */
- jnz 2f
- alr %r1,%r3 /* Add length to offset. */
- brc 3,2f /* Carry -> EINVAL. */
+1: lm %r0,%r1,216(%r15) /* Load 64 bit offset. */
+ st %r1,0x74(%r15) /* Store lower word of offset. */
+ ltr %r0,%r0 /* Offset > 2^32 ? */
+ jnz 2f
+ alr %r1,%r3 /* Add length to offset. */
+ brc 3,2f /* Carry -> EINVAL. */
- la %r2,0x60(%r15) /* Load address of parameter list. */
- svc SYS_ify(mmap2) /* Do the system call trap. */
+ la %r2,0x60(%r15) /* Load address of parameter list. */
+ svc SYS_ify(mmap) /* Do the system call trap. */
- l %r15,0(%r15) /* Load back chain. */
- lm %r6,%r15,24(%r15) /* Load registers. */
+ l %r15,0(%r15) /* Load back chain. */
+ lm %r6,%r15,24(%r15) /* Load registers. */
/* Check gpr 2 for error. */
- lhi %r0,-4096
- clr %r2,%r0
- jnl SYSCALL_ERROR_LABEL
+ lhi %r0,-4096
+ clr %r2,%r0
+ jnl SYSCALL_ERROR_LABEL
/* Successful; return the syscall's value. */
- br %r14
+ br %r14
#endif
-2: lhi %r2,-EINVAL
- l %r15,0(%r15) /* Load back chain. */
- lm %r6,%r15,24(%r15) /* Load registers. */
- j SYSCALL_ERROR_LABEL
-
+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)