diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/syscall.S | 27 |
2 files changed, 10 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog index 31a8ca0013..3f40c9518a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2000-06-10 David Mosberger <davidm@hpl.hp.com> + + * sysdeps/unix/sysv/linux/ia64/syscall.S: Fix it so it actually works. + 2000-06-10 Ulrich Drepper <drepper@redhat.com> * iconv/gconv_simple.c: Fix various small bugs in several diff --git a/sysdeps/unix/sysv/linux/ia64/syscall.S b/sysdeps/unix/sysv/linux/ia64/syscall.S index 25f81cd61a..b632514033 100644 --- a/sysdeps/unix/sysv/linux/ia64/syscall.S +++ b/sysdeps/unix/sysv/linux/ia64/syscall.S @@ -1,6 +1,6 @@ /* Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Jes Sorensen (Jes.Sorensen@cern.ch) + Contributed by Jes Sorensen <Jes.Sorensen@cern.ch>. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -19,27 +19,12 @@ #include <sysdep.h> -/* - * This is ugly as hell, but we need to take out the syscall number and - * rotate the input arguments one register before performing the syscall - */ -ENTRY(__syscall) +ENTRY(syscall) + alloc r2=ar.pfs,1,0,8,0 mov r15=r32 /* syscall number */ - ;; - mov r32=r33 - ;; - mov r33=r34 - ;; - mov r34=r35 - ;; - mov r35=r36 - ;; - mov r36=r37 break __BREAK_SYSCALL - cmp.ne p6,p0=-1,r10 /* r10 = -1 on error */ ;; + cmp.ne p6,p0=-1,r10 /* r10 = -1 on error */ (p6) ret -(p7) br.cond.spnt.few __syscall_error -PSEUDO_END(__syscall) - -weak_alias (__syscall, syscall) + br.cond.spnt.few __syscall_error +PSEUDO_END(syscall) |