svn commit: trunk/uClibc/libc/sysdeps/linux/mips

vapier at uclibc.org vapier at uclibc.org
Sat Sep 15 07:25:55 UTC 2007


Author: vapier
Date: 2007-09-15 00:25:54 -0700 (Sat, 15 Sep 2007)
New Revision: 19837

Log:
Atsushi Nemoto writes:
In MIPS syscall(2), .cpload was added to an the error path, but it was
not enough for ABIs other then O32.  Use SETUP_GP, SETUP_GP64 and
RESTORE_GP64 to handle all ABIs.  This patch fixes an error path of
MIPS pipe(2) too.


Modified:
   trunk/uClibc/libc/sysdeps/linux/mips/pipe.S
   trunk/uClibc/libc/sysdeps/linux/mips/syscall.S


Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/mips/pipe.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/mips/pipe.S	2007-09-15 06:50:02 UTC (rev 19836)
+++ trunk/uClibc/libc/sysdeps/linux/mips/pipe.S	2007-09-15 07:25:54 UTC (rev 19837)
@@ -14,7 +14,11 @@
 
 	.globl	pipe
 	.ent	pipe, 0
+	.type pipe, at function
 pipe:
+#ifdef __PIC__
+	SETUP_GP
+#endif
 	li	v0,__NR_pipe
 	syscall
 	bnez	a3, 1f
@@ -28,7 +32,9 @@
 	/* uClibc change -- stop */
 
 #ifdef __PIC__
+	SETUP_GP64(v0, pipe)
 	PTR_LA	t9, __syscall_error
+	RESTORE_GP64
 	jr	t9
 #else
 	j	__syscall_error

Modified: trunk/uClibc/libc/sysdeps/linux/mips/syscall.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/mips/syscall.S	2007-09-15 06:50:02 UTC (rev 19836)
+++ trunk/uClibc/libc/sysdeps/linux/mips/syscall.S	2007-09-15 07:25:54 UTC (rev 19837)
@@ -29,8 +29,10 @@
 .type   syscall, at function
 .ent    syscall
 syscall:
+#ifdef __PIC__
+	SETUP_GP
+#endif
 	.set noreorder
-	.cpload t9;
 	move	v0, a0		/* Load system call number from first arg.  */
 	move	a0, a1		/* Move the next three args up a register.  */
 	move	a1, a2
@@ -68,7 +70,9 @@
 	move	a0,v0		/* Pass return val to C function. */
 
 #ifdef __PIC__
+	SETUP_GP64(v0, syscall)
 	PTR_LA	t9, __syscall_error
+	RESTORE_GP64
 	jr	t9
 #else
 	j	__syscall_error




More information about the uClibc-cvs mailing list