about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/i386/mmap64.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-01-04 00:37:51 +0000
committerUlrich Drepper <drepper@redhat.com>2000-01-04 00:37:51 +0000
commit52354636d3ba63e3467c9062f6ddbaf5138f0229 (patch)
treefdf70fbff2c72b1bff8958306d4ce5e3d259808d /sysdeps/unix/sysv/linux/i386/mmap64.S
parente3aaaa2732fbde38c612442fe4f688f2f58801ff (diff)
downloadglibc-52354636d3ba63e3467c9062f6ddbaf5138f0229.tar.gz
glibc-52354636d3ba63e3467c9062f6ddbaf5138f0229.tar.xz
glibc-52354636d3ba63e3467c9062f6ddbaf5138f0229.zip
Update.
2000-01-03  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/i386/mmap64.S: Fix code for running on
	kernel without mmap2 syscall.
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/mmap64.S')
-rw-r--r--sysdeps/unix/sysv/linux/i386/mmap64.S20
1 files changed, 10 insertions, 10 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/mmap64.S b/sysdeps/unix/sysv/linux/i386/mmap64.S
index 0785bce783..22515a11d2 100644
--- a/sysdeps/unix/sysv/linux/i386/mmap64.S
+++ b/sysdeps/unix/sysv/linux/i386/mmap64.S
@@ -62,6 +62,12 @@ L(do_syscall):
 	popl %ebx
 	popl %ebp
 
+#ifndef __ASSUME_MMAP2_SYSCALL
+2:
+	cmp $-ENOSYS, %eax
+	je 3f
+#endif
+
 	/* If 0 > %eax > -4096 there was an error.  */
 	cmpl $-4096, %eax
 	ja SYSCALL_ERROR_LABEL
@@ -70,12 +76,6 @@ L(do_syscall):
 L(pseudo_end):
 	ret
 
-#ifndef __ASSUME_MMAP2_SYSCALL
-2:
-	cmp $-ENOSYS, %eax
-	je 3f
-#endif
-
 	/* This means the offset value is too large.  */
 L(einval):
 	popl %edi
@@ -88,12 +88,11 @@ L(einval):
 
 #if !defined __ASSUME_MMAP2_SYSCALL || !defined __NR_mmap2
 
-# ifndef __NR_mmap2
+3:
 	/* Save registers.  */
 	movl %ebx, %edx
-# endif
-3:
-	cmpl $0, 44(%esp)
+
+	cmpl $0, 28(%esp)
 	jne L(einval)
 
 	movl $SYS_ify(mmap), %eax	/* System call number in %eax.  */
@@ -119,6 +118,7 @@ L(pseudo_end):
 	ret
 
 L(einval):
+	movl %edx, %ebx
 	movl $-EINVAL, %eax
 	jmp SYSCALL_ERROR_LABEL
 # endif