(syscall): Cleanup asm statment.
authorUlrich Drepper <drepper@redhat.com>
Wed, 15 Oct 2003 05:45:16 +0000 (05:45 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 15 Oct 2003 05:45:16 +0000 (05:45 +0000)
sysdeps/unix/sysv/linux/hppa/sysdep.c

index bf4d4af..192efba 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001, 2003 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
 #include <sysdep.h>
 #include <errno.h>
 
+extern int __syscall_error(int err_no);
+extern int syscall (int sysnum, int arg0, int arg1, int arg2,
+                   int arg3, int arg4, int arg5);
+
 /* This routine is jumped to by all the syscall handlers, to stash
    an error number into errno.  */
 int
@@ -30,25 +34,31 @@ __syscall_error (int err_no)
 
 
 /* HPPA implements syscall() in 'C'; the assembler version would
-   typically be in syscall.S.  */
-
+   typically be in syscall.S. Also note that we have INLINE_SYSCALL,
+   INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers.
+   How often the function is used is unknown. */
 int
-syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5)
+syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4,
+        int arg5)
 {
-  long __sys_res;
+  /* FIXME: Keep this matching INLINE_SYSCALL for hppa */
+  long int __sys_res;
   {
-    register unsigned long __res asm("r28");
-    LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5)
-      asm volatile ("ble  0x100(%%sr2, %%r0)\n\t"
-                   "copy %1, %%r20"
-                   : "=r" (__res)
-                   : "r" (sysnum) ASM_ARGS_6);
+    register unsigned long int __res asm("r28");
+    LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5)
+    asm volatile (STW_ASM_PIC
+                 "     ble  0x100(%%sr2, %%r0) \n"
+                 "     copy %1, %%r20          \n"
+                 LDW_ASM_PIC
+                 : "=r" (__res)
+                 : "r" (sysnum) ASM_ARGS_6
+                 : CALL_CLOB_REGS CLOB_ARGS_6);
     __sys_res = __res;
   }
-  if ((unsigned long) __sys_res >= (unsigned long)-4095)
+  if ((unsigned long int) __sys_res >= (unsigned long int) -4095)
     {
-    __set_errno(-__sys_res);
-    __sys_res = -1;
-  }
+      __set_errno (-__sys_res);
+      __sys_res = -1;
+    }
   return __sys_res;
 }