OSDN Git Service

Atsushi Nemoto writes:
authorEric Andersen <andersen@codepoet.org>
Tue, 19 Oct 2004 19:24:13 +0000 (19:24 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 19 Oct 2004 19:24:13 +0000 (19:24 -0000)
In a recent post to linux-mips ML (and libc-alpha ML), a problem with
inline syscalls was reported.

http://www.linux-mips.org/archives/linux-mips/2004-10/msg00142.html

It seems uClibc should be fixed also for newer gcc.  Here is a patch.

libc/sysdeps/linux/mips/bits/syscalls.h

index 22d53aa..2f50026 100644 (file)
@@ -30,7 +30,7 @@ __asm__ volatile ("li\t$2,%2\n\t" \
                   : "=r" (__res), "=r" (__err) \
                   : "i" (__NR_##name) \
                   : "$2","$7","$8","$9","$10","$11","$12","$13","$14","$15", \
-                   "$24"); \
+                   "$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -52,7 +52,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                  "move\t%1, $7" \
                  : "=r" (__res), "=r" (__err) \
                  : "i" (__NR_##name),"r" ((long)(a)) \
-                 : "$2","$4","$7","$8","$9","$10","$11","$12","$13","$14","$15","$24"); \
+                 : "$2","$4","$7","$8","$9","$10","$11","$12","$13","$14","$15","$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -73,7 +73,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                   : "i" (__NR_##name),"r" ((long)(a)), \
                                       "r" ((long)(b)) \
                   : "$2","$4","$5","$7","$8","$9","$10","$11","$12","$13", \
-                   "$14","$15", "$24"); \
+                   "$14","$15", "$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -96,7 +96,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                                       "r" ((long)(b)), \
                                       "r" ((long)(c)) \
                   : "$2","$4","$5","$6","$7","$8","$9","$10","$11","$12", \
-                   "$13","$14","$15","$24"); \
+                   "$13","$14","$15","$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -121,7 +121,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                                       "r" ((long)(c)), \
                                       "r" ((long)(d)) \
                   : "$2","$4","$5","$6","$7","$8","$9","$10","$11","$12", \
-                   "$13","$14","$15","$24"); \
+                   "$13","$14","$15","$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -151,7 +151,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                                       "r" ((long)(d)), \
                                       "m" ((long)(e)) \
                   : "$2","$4","$5","$6","$7","$8","$9","$10","$11","$12", \
-                    "$13","$14","$15","$24"); \
+                    "$13","$14","$15","$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -184,7 +184,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                                       "m" ((long)(e)), \
                                       "m" ((long)(f)) \
                   : "$2","$3","$4","$5","$6","$7","$8","$9","$10","$11", \
-                    "$12","$13","$14","$15","$24"); \
+                    "$12","$13","$14","$15","$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \
@@ -220,7 +220,7 @@ __asm__ volatile ("move\t$4,%3\n\t" \
                                       "m" ((long)(f)), \
                                       "m" ((long)(g)) \
                   : "$2","$3","$4","$5","$6","$7","$8","$9","$10","$11", \
-                    "$12","$13","$14","$15","$24"); \
+                    "$12","$13","$14","$15","$24","memory"); \
 if (__err == 0) \
        return (type) __res; \
 __set_errno(__res); \