diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-01-28 19:33:01 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-02-14 21:09:12 -0300 |
commit | 86c5d2cf0ce046279baddc7faa27da71f1a89fde (patch) | |
tree | 7c5c1317788df62120f457da5829ca5f7bdbde86 /sysdeps/unix/sysv/linux/sparc/sparc64 | |
parent | e26b8a008ae6f45f6aa2dd56f6d6ce13f181df9f (diff) | |
download | glibc-86c5d2cf0ce046279baddc7faa27da71f1a89fde.zip glibc-86c5d2cf0ce046279baddc7faa27da71f1a89fde.tar.gz glibc-86c5d2cf0ce046279baddc7faa27da71f1a89fde.tar.bz2 |
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.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/sparc64')
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h index b9a4c75..2010faf 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h @@ -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 \ |