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