Here is a small fix for 64bit (N32 or ABI64) version of _syscall6().
"__NR_##name" is 7th parameter not 6th.
This is for 2.4 branch.
diff -u linux-mips-cvs/include/asm-mips64/unistd.h
linux.new/include/asm-mips64/unistd.h
--- linux-mips-cvs/include/asm-mips64/unistd.h Tue Jul 22 09:48:19 2003
+++ linux.new/include/asm-mips64/unistd.h Tue Jul 29 16:03:31 2003
@@ -883,7 +883,7 @@
\
__asm__ volatile ( \
".set\tnoreorder\n\t" \
- "li\t$2, %6\t\t\t# " #name "\n\t" \
+ "li\t$2, %7\t\t\t# " #name "\n\t" \
"syscall\n\t" \
"move\t%0, $2\n\t" \
".set\treorder" \
And this is for 2.6.
diff -u linux-mips-cvs-2.6/include/asm-mips/unistd.h
linux.new-2.6/include/asm-mips/unistd.h
--- linux-mips-cvs-2.6/include/asm-mips/unistd.h Tue Jul 29 16:08:13 2003
+++ linux.new-2.6/include/asm-mips/unistd.h Tue Jul 29 16:10:43 2003
@@ -1028,7 +1028,7 @@
\
__asm__ volatile ( \
".set\tnoreorder\n\t" \
- "li\t$2, %6\t\t\t# " #name "\n\t" \
+ "li\t$2, %7\t\t\t# " #name "\n\t" \
"syscall\n\t" \
"move\t%0, $2\n\t" \
".set\treorder" \
---
Atsushi Nemoto
|