diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/mmap64.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/mmap64.S | 20 |
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 |