diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-09-24 07:18:48 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-09-24 07:18:48 +0000 |
commit | 362038b0cab33f8e61ada54aaaf4312e44a0922b (patch) | |
tree | fa5a5c729c0160ef441981e4ecb66ec381cb8fe8 /sysdeps/unix/sysv/linux/sh/sysdep.h | |
parent | 8f1913a918177f148909281322f2f0638472fed3 (diff) | |
download | glibc-362038b0cab33f8e61ada54aaaf4312e44a0922b.tar.gz glibc-362038b0cab33f8e61ada54aaaf4312e44a0922b.tar.xz glibc-362038b0cab33f8e61ada54aaaf4312e44a0922b.zip |
Update.
2004-09-23 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL_NCS): Define.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sh/sysdep.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/sysdep.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.h b/sysdeps/unix/sysv/linux/sh/sysdep.h index 35b8a58afa..aeec279de0 100644 --- a/sysdeps/unix/sysv/linux/sh/sysdep.h +++ b/sysdeps/unix/sysv/linux/sh/sysdep.h @@ -333,6 +333,20 @@ \ (int) resultvar; }) +/* The _NCS variant allows non-constant syscall numbers. */ +#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ + ({ \ + unsigned long int resultvar; \ + register long int r3 asm ("%r3") = (name); \ + SUBSTITUTE_ARGS_##nr(args); \ + \ + asm volatile (SYSCALL_INST_STR##nr SYSCALL_INST_PAD \ + : "=z" (resultvar) \ + : "r" (r3) ASMFMT_##nr \ + : "memory"); \ + \ + (int) resultvar; }) + #undef INTERNAL_SYSCALL_DECL #define INTERNAL_SYSCALL_DECL(err) do { } while (0) |