mirror of git://sourceware.org/git/glibc.git
mips: Consolidate INTERNAL_VSYSCALL_CALL
This patch consolidates the mips, mips64, and mips64-n32 INTERNAL_VSYSCALL_CALL on a single implementation. No semantic changes. I checked against a build for mips-linux-gnu, mips64-linux-gnu, and mips64-n32-linux-gnu. * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h (INTERNAL_VSYSCALL_CALL): Remove. * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h (INTERNAL_VSYSCALL_CALL): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h (INTERNAL_VSYSCALL_CALL): Likewise. * sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_VSYSCALL_CALL): New macro.
This commit is contained in:
parent
986a506481
commit
7c3eed7860
|
|
@ -1,5 +1,14 @@
|
|||
2019-09-17 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
|
||||
(INTERNAL_VSYSCALL_CALL): Remove.
|
||||
* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
|
||||
(INTERNAL_VSYSCALL_CALL): Likewise.
|
||||
* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
|
||||
(INTERNAL_VSYSCALL_CALL): Likewise.
|
||||
* sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_VSYSCALL_CALL):
|
||||
New macro.
|
||||
|
||||
* sysdeps/unix/sysv/linux/libc-vdso.h (VDSO_IFUNC_RET): Define if not
|
||||
defined.
|
||||
* sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c
|
||||
|
|
|
|||
|
|
@ -349,18 +349,6 @@ libc_hidden_proto (__mips_syscall7, nomips16)
|
|||
#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
|
||||
"$14", "$15", "$24", "$25", "hi", "lo", "memory"
|
||||
|
||||
/* Standard MIPS syscalls have an error flag, and return a positive errno
|
||||
when the error flag is set. Emulate this behaviour for vsyscalls so that
|
||||
the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly. */
|
||||
#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...) \
|
||||
({ \
|
||||
long _ret = funcptr (args); \
|
||||
err = ((unsigned long) (_ret) >= (unsigned long) -4095L); \
|
||||
if (err) \
|
||||
_ret = -_ret; \
|
||||
_ret; \
|
||||
})
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
/* Pointer mangling is not yet supported for MIPS. */
|
||||
|
|
|
|||
|
|
@ -297,18 +297,6 @@
|
|||
#define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
|
||||
"$14", "$15", "$24", "$25", "hi", "lo", "memory"
|
||||
|
||||
/* Standard MIPS syscalls have an error flag, and return a positive errno
|
||||
when the error flag is set. Emulate this behaviour for vsyscalls so that
|
||||
the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly. */
|
||||
#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...) \
|
||||
({ \
|
||||
long _ret = funcptr (args); \
|
||||
err = ((unsigned long) (_ret) >= (unsigned long) -4095L); \
|
||||
if (err) \
|
||||
_ret = -_ret; \
|
||||
_ret; \
|
||||
})
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
/* Pointer mangling is not yet supported for MIPS. */
|
||||
|
|
|
|||
|
|
@ -293,18 +293,6 @@
|
|||
#define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
|
||||
"$14", "$15", "$24", "$25", "hi", "lo", "memory"
|
||||
|
||||
/* Standard MIPS syscalls have an error flag, and return a positive errno
|
||||
when the error flag is set. Emulate this behaviour for vsyscalls so that
|
||||
the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly. */
|
||||
#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...) \
|
||||
({ \
|
||||
long _ret = funcptr (args); \
|
||||
err = ((unsigned long) (_ret) >= (unsigned long) -4095L); \
|
||||
if (err) \
|
||||
_ret = -_ret; \
|
||||
_ret; \
|
||||
})
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
/* Pointer mangling is not yet supported for MIPS. */
|
||||
|
|
|
|||
|
|
@ -22,3 +22,19 @@
|
|||
/* List of system calls which are supported as vsyscalls. */
|
||||
#define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_gettimeofday"
|
||||
#define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_clock_gettime"
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
/* Standard MIPS syscalls have an error flag, and return a positive errno
|
||||
when the error flag is set. Emulate this behaviour for vsyscalls so that
|
||||
the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly. */
|
||||
#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...) \
|
||||
({ \
|
||||
long _ret = funcptr (args); \
|
||||
err = ((unsigned long) (_ret) >= (unsigned long) -4095L); \
|
||||
if (err) \
|
||||
_ret = -_ret; \
|
||||
_ret; \
|
||||
})
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
|
|
|||
Loading…
Reference in New Issue