about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/sparc/syscall.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/syscall.S')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/syscall.S19
1 files changed, 15 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/syscall.S b/sysdeps/unix/sysv/linux/sparc/syscall.S
index 4166e4231b..3921ca52dc 100644
--- a/sysdeps/unix/sysv/linux/sparc/syscall.S
+++ b/sysdeps/unix/sysv/linux/sparc/syscall.S
@@ -16,15 +16,26 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#define DONT_LOAD_G1
 #include <sysdep.h>
-ENTRY (__libc_syscall)
+	.text
+ENTRY (syscall)
 	or	%o0,%g0,%g1
 	or	%o1,%g0,%o0
 	or	%o2,%g0,%o1
 	or	%o3,%g0,%o2
 	or	%o4,%g0,%o3
 	or	%o5,%g0,%o4
-PSEUDO_NOENT(__libc_syscall, syscall, 5)
+	ta	0x10
+	bcc	1f
+	nop
+	save %sp, -96, %sp
+	call __errno_location
+	nop
+	st %i0,[%o0]
+	restore
+	retl
+	mov -1, %o0
+1:
 	ret
-SYSCALL__POST(syscall,5)
+
+PSEUDO_END (syscall)