mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
mips: Use Linux kABI for syscall return
It changes the mips INTERNAL_SYSCALL* and internal_syscall* macros to return a negative value instead of the 'a3' register value on then 'err' macro argument. The macro INTERNAL_SYSCALL_DECL is no longer required, and the INTERNAL_SYSCALL_ERROR_P macro follows the other Linux kABIs. The redefinition of INTERNAL_VSYSCALL_CALL is also no longer required. Checked on mips64-linux-gnu, mips64n32-linux-gnu, and mips-linux-gnu.
This commit is contained in:
@ -28,19 +28,3 @@
|
||||
#endif
|
||||
#define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday"
|
||||
#define HAVE_CLOCK_GETRES_VSYSCALL "__vdso_clock_getres"
|
||||
|
||||
#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 int _ret = funcptr (args); \
|
||||
err = ((unsigned long int) (_ret) >= (unsigned long int) -4095L); \
|
||||
if (err) \
|
||||
_ret = -_ret; \
|
||||
_ret; \
|
||||
})
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
Reference in New Issue
Block a user