.global posix_fadvise64
.type posix_fadvise64,%function
posix_fadvise64:
-#ifdef __NR_posix_fadvise64_64
-
+#if defined __NR_fadvise64_64 && defined __UCLIBC_HAS_LFS__
/* Save regs */
pushl %ebp
pushl %ebx
pushl %esi
pushl %edi
- movl $__NR_posix_fadvise64_64, %eax /* Syscall number in %eax. */
+ movl $__NR_fadvise64_64, %eax /* Syscall number in %eax. */
movl 24(%esp), %ebx
movl 28(%esp), %ecx
/* If 0 > %eax > -4096 there was an error. */
cmpl $-4096, %eax
ja __syscall_error
-#else
+#elif defined __NR_fadvise64
+ /* Save regs */
+ pushl %ebx
+ pushl %esi
+ pushl %edi
+
+ /* does len overflow long? */
+ cmpl $0, 40(%esp)
+ movl $-EOVERFLOW, %eax
+ ja overflow
+
+ movl $__NR_fadvise64, %eax /* Syscall number in %eax. */
+
+ movl 24(%esp), %ebx
+ movl 28(%esp), %ecx
+ movl 32(%esp), %edx
+ movl 36(%esp), %esi
+ movl 44(%esp), %edi
+
+ /* Do the system call trap. */
+ int $0x80
+overflow:
+ /* Restore regs */
+ popl %edi
+ popl %esi
+ popl %ebx
+
+ /* If 0 > %eax > -4096 there was an error. */
+ cmpl $-4096, %eax
+ ja __syscall_error
+
+#elif defined __UCLIBC_HAS_STUBS__
movl $-ENOSYS, %eax
jmp __syscall_error
#endif