1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

sparc: Use Linux kABI for syscall return

It changes the sparc internal_syscall* macros to return a negative
value instead of the 'g1' register value in the 'err' macro argument.
The __SYSCALL_STRING macro is also changed to no set the 'g1'
value, since 'o1' already holds all the required information
to check if syscall has failed.

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 sparc64-linux-gnu and sparcv9-linux-gnu. It fixes
the sporadic issues on sparc32 where clock_nanosleep does not
act as cancellation entrypoint.
This commit is contained in:
Adhemerval Zanella
2020-01-28 19:33:01 -03:00
parent e26b8a008a
commit 86c5d2cf0c
3 changed files with 38 additions and 48 deletions

View File

@ -109,9 +109,8 @@ ENTRY(name); \
#define __SYSCALL_STRING \
"ta 0x6d;" \
"bcc,pt %%xcc, 1f;" \
" mov 0, %%g1;" \
" nop;" \
"sub %%g0, %%o0, %%o0;" \
"mov 1, %%g1;" \
"1:"
#define __SYSCALL_CLOBBERS \