Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 13 Apr 2004 00:27:59 +0000 (00:27 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 13 Apr 2004 00:27:59 +0000 (00:27 +0000)
2004-04-09  Andreas Schwab  <schwab@suse.de>

* sysdeps/unix/sysv/linux/ia64/sysdep.h (DO_INLINE_SYSCALL): Move
LOAD_ARGS_##nr up front and add LOAD_REGS_##nr.
(LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4)
(LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary
variables.
(LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4)
(LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the
syscall argument registers.

* sysdeps/unix/sysv/linux/x86_64/sysdep.h (INTERNAL_SYSCALL): Add
LOAD_REGS_##nr.
(LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4)
(LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary
variables.
(LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4)
(LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the
syscall argument registers.

ChangeLog
sysdeps/unix/sysv/linux/x86_64/sysdep.h

index 64b03c3..dfaa11f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2004-04-09  Andreas Schwab  <schwab@suse.de>
+
+       * sysdeps/unix/sysv/linux/ia64/sysdep.h (DO_INLINE_SYSCALL): Move
+       LOAD_ARGS_##nr up front and add LOAD_REGS_##nr.
+       (LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4)
+       (LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary
+       variables.
+       (LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4)
+       (LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the
+       syscall argument registers.
+
+       * sysdeps/unix/sysv/linux/x86_64/sysdep.h (INTERNAL_SYSCALL): Add
+       LOAD_REGS_##nr.
+       (LOAD_ARGS_0, LOAD_ARGS_1, LOAD_ARGS_2, LOAD_ARGS_3, LOAD_ARGS_4)
+       (LOAD_ARGS_5, LOAD_ARGS_6): Load argument values into temporary
+       variables.
+       (LOAD_REGS_0, LOAD_REGS_1, LOAD_REGS_2, LOAD_REGS_3, LOAD_REGS_4)
+       (LOAD_REGS_5, LOAD_REGS_6): New macros to actually load the
+       syscall argument registers.
+
 2004-04-09  Thorsten Kukuk  <kukuk@suse.de>
 
        * sysdeps/s390/ffs.c: Don't add ffsl weak alias on s390x.
index 8ba7d44..09f8492 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,02,03 Free Software Foundation, Inc.
+/* Copyright (C) 2001,02,03,04 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
   ({                                                                         \
     unsigned long resultvar;                                                 \
     LOAD_ARGS_##nr (args)                                                    \
+    LOAD_REGS_##nr                                                           \
     asm volatile (                                                           \
     "movq %1, %%rax\n\t"                                                     \
     "syscall\n\t"                                                            \
 #define INTERNAL_SYSCALL_ERRNO(val, err)       (-(val))
 
 #define LOAD_ARGS_0()
+#define LOAD_REGS_0
 #define ASM_ARGS_0
 
 #define LOAD_ARGS_1(a1)                                        \
-  register long int _a1 asm ("rdi") = (long) (a1);     \
+  long int __arg1 = (long) (a1);                       \
   LOAD_ARGS_0 ()
+#define LOAD_REGS_1                                    \
+  register long int _a1 asm ("rdi") = __arg1;          \
+  LOAD_REGS_0
 #define ASM_ARGS_1     ASM_ARGS_0, "r" (_a1)
 
 #define LOAD_ARGS_2(a1, a2)                            \
-  register long int _a2 asm ("rsi") = (long) (a2);     \
+  long int __arg2 = (long) (a2);                       \
   LOAD_ARGS_1 (a1)
+#define LOAD_REGS_2                                    \
+  register long int _a2 asm ("rsi") = __arg2;          \
+  LOAD_REGS_1
 #define ASM_ARGS_2     ASM_ARGS_1, "r" (_a2)
 
 #define LOAD_ARGS_3(a1, a2, a3)                                \
-  register long int _a3 asm ("rdx") = (long) (a3);     \
+  long int __arg3 = (long) (a3);                       \
   LOAD_ARGS_2 (a1, a2)
+#define LOAD_REGS_3                                    \
+  register long int _a3 asm ("rdx") = __arg3;          \
+  LOAD_REGS_2
 #define ASM_ARGS_3     ASM_ARGS_2, "r" (_a3)
 
 #define LOAD_ARGS_4(a1, a2, a3, a4)                    \
-  register long int _a4 asm ("r10") = (long) (a4);     \
+  long int __arg4 = (long) (a4);                       \
   LOAD_ARGS_3 (a1, a2, a3)
+#define LOAD_REGS_4                                    \
+  register long int _a4 asm ("r10") = __arg4;          \
+  LOAD_REGS_3
 #define ASM_ARGS_4     ASM_ARGS_3, "r" (_a4)
 
 #define LOAD_ARGS_5(a1, a2, a3, a4, a5)                        \
-  register long int _a5 asm ("r8") = (long) (a5);      \
+  long int __arg5 = (long) (a5);                       \
   LOAD_ARGS_4 (a1, a2, a3, a4)
+#define LOAD_REGS_5                                    \
+  register long int _a5 asm ("r8") = __arg5;           \
+  LOAD_REGS_4
 #define ASM_ARGS_5     ASM_ARGS_4, "r" (_a5)
 
 #define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6)            \
-  register long int _a6 asm ("r9") = (long) (a6);      \
+  long int __arg6 = (long) (a6);                       \
   LOAD_ARGS_5 (a1, a2, a3, a4, a5)
+#define LOAD_REGS_6                                    \
+  register long int _a6 asm ("r9") = __arg6;           \
+  LOAD_REGS_5
 #define ASM_ARGS_6     ASM_ARGS_5, "r" (_a6)
 
 #endif /* __ASSEMBLER__ */