summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/bfin
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2008-12-11 10:01:31 +0000
committerMike Frysinger <vapier@gentoo.org>2008-12-11 10:01:31 +0000
commitd5347dd20a79a4f2b80d6910dc02d6b38017d1b2 (patch)
treeef42921c94e84be1c6e161cf66d8b874a57a6849 /libc/sysdeps/linux/bfin
parent6e3adb1f64a3253b4a078955979b817888d05ceb (diff)
use newer spiffy asm constraints to get better code generation
Diffstat (limited to 'libc/sysdeps/linux/bfin')
-rw-r--r--libc/sysdeps/linux/bfin/syscall.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/libc/sysdeps/linux/bfin/syscall.c b/libc/sysdeps/linux/bfin/syscall.c
index 1db873874..d68eb6e2f 100644
--- a/libc/sysdeps/linux/bfin/syscall.c
+++ b/libc/sysdeps/linux/bfin/syscall.c
@@ -29,24 +29,16 @@ long syscall(long sysnum, long a, long b, long c, long d, long e, long f)
int _r0 = 0;
__asm__ __volatile__ (
- "R5 = %7;"
- "R4 = %6;"
- "R3 = %5;"
- "R2 = %4;"
- "R1 = %3;"
- "R0 = %2;"
- "P0 = %1;"
"excpt 0;"
- "%0 = R0;"
- : "=r" (_r0)
- : "rm" (sysnum),
- "rm" (a),
- "rm" (b),
- "rm" (c),
- "rm" (d),
- "rm" (e),
- "rm" (f)
- : "memory","CC","R0","R1","R2","R3","R4","R5","P0");
+ : "=q0" (_r0)
+ : "qA" (sysnum),
+ "q0" (a),
+ "q1" (b),
+ "q2" (c),
+ "q3" (d),
+ "q4" (e),
+ "q5" (f)
+ : "memory", "CC");
if (_r0 >= (unsigned long) -4095) {
(*__errno_location()) = (-_r0);