Blame sysdeps/unix/sysv/linux/sparc/kernel-features.h

Packit 6c4009
/* Set flags signalling availability of kernel features based on given
Packit 6c4009
   kernel version number.  SPARC version.
Packit 6c4009
   Copyright (C) 1999-2018 Free Software Foundation, Inc.
Packit 6c4009
   This file is part of the GNU C Library.
Packit 6c4009
Packit 6c4009
   The GNU C Library is free software; you can redistribute it and/or
Packit 6c4009
   modify it under the terms of the GNU Lesser General Public
Packit 6c4009
   License as published by the Free Software Foundation; either
Packit 6c4009
   version 2.1 of the License, or (at your option) any later version.
Packit 6c4009
Packit 6c4009
   The GNU C Library is distributed in the hope that it will be useful,
Packit 6c4009
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c4009
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c4009
   Lesser General Public License for more details.
Packit 6c4009
Packit 6c4009
   You should have received a copy of the GNU Lesser General Public
Packit 6c4009
   License along with the GNU C Library; if not, see
Packit 6c4009
   <http://www.gnu.org/licenses/>.  */
Packit 6c4009
Packit 6c4009
/* SPARC uses socketcall.  */
Packit 6c4009
#define __ASSUME_SOCKETCALL		1
Packit 6c4009
Packit 6c4009
#include_next <kernel-features.h>
Packit 6c4009
Packit 6c4009
/* 32-bit SPARC kernels do not support
Packit 6c4009
   futex_atomic_cmpxchg_inatomic.  */
Packit 6c4009
#if !defined __arch64__ && !defined __sparc_v9__
Packit 6c4009
# undef __ASSUME_SET_ROBUST_LIST
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
#if !defined __arch64__
Packit 6c4009
# undef __ASSUME_ACCEPT_SYSCALL
Packit 6c4009
# undef __ASSUME_CONNECT_SYSCALL
Packit 6c4009
# undef __ASSUME_RECVFROM_SYSCALL
Packit 6c4009
#else
Packit 6c4009
/* sparc64 defines __NR_pause,  however it is not supported (ENOSYS).
Packit 6c4009
   Undefine so pause.c can use a correct alternative.  */
Packit 6c4009
# undef __NR_pause
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
/* sparc only supports ipc syscall.  */
Packit 6c4009
#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
Packit 6c4009
Packit 6c4009
/* Support for the renameat2 syscall was added in 3.16.  */
Packit 6c4009
#if __LINUX_KERNEL_VERSION < 0x031000
Packit 6c4009
# undef __ASSUME_RENAMEAT2
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
/* SPARC kernel Kconfig does not define CONFIG_CLONE_BACKWARDS, however it
Packit 6c4009
   has the same ABI as if it did, implemented by sparc-specific code
Packit 6c4009
   (sparc_do_fork).
Packit 6c4009
Packit 6c4009
   It also has a unique return value convention:
Packit 6c4009
Packit 6c4009
     Parent -->  %o0 == child's  pid, %o1 == 0
Packit 6c4009
     Child  -->  %o0 == parent's pid, %o1 == 1
Packit 6c4009
Packit 6c4009
   Which required a special macro to correct issue the syscall
Packit 6c4009
   (INLINE_CLONE_SYSCALL).  */
Packit 6c4009
#undef __ASSUME_CLONE_DEFAULT
Packit 6c4009
#define __ASSUME_CLONE_BACKWARDS	1