mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-02 01:40:07 +00:00
cd72a13f22
The diferences between powerpc64{le} and powerpc32 Linux sysdep.h are: 1. On both vDSO and syscall macros the volatile registers r9, r10, r11, and r12 are used as input operands on powerpc32 and as clobber registers on powerpc64. However the outcome is essentially the same, it advertise the register might be clobbered by the kernel (although Linux won't leak register information to userland in such case). 2. The LOADARGS* macros uses a different size to check for invalid types. 3. The pointer mangling support guard pointer loading uses ABI specific instruction and register. This patch consolidates on only one sysdep by using the the powerpc64 version as default and add the adjustments required for powerpc32. Checked on powerpc64-linux-gnu, powerpc64le-linux-gnu, and powerpc-linux-gnu-power4.
35 lines
1.3 KiB
C
35 lines
1.3 KiB
C
/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
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
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library; if not, see
|
|
<https://www.gnu.org/licenses/>. */
|
|
|
|
/* Alan Modra <amodra@bigpond.net.au> rewrote the INLINE_SYSCALL macro */
|
|
|
|
#ifndef _LINUX_POWERPC64_SYSDEP_H
|
|
#define _LINUX_POWERPC64_SYSDEP_H 1
|
|
|
|
#include <sysdeps/unix/sysv/linux/powerpc/sysdep.h>
|
|
|
|
/* In the PowerPC64 ABI, the unadorned F_GETLK* opcodes should be used
|
|
even by largefile64 code. */
|
|
#define FCNTL_ADJUST_CMD(__cmd) \
|
|
({ int cmd_ = (__cmd); \
|
|
if (cmd_ >= F_GETLK64 && cmd_ <= F_SETLKW64) \
|
|
cmd_ -= F_GETLK64 - F_GETLK; \
|
|
cmd_; })
|
|
|
|
|
|
#endif /* linux/powerpc/powerpc64/sysdep.h */
|