Index: arch/amd64/include/syscall.h
===================================================================
--- arch/amd64/include/syscall.h	(revision 25d77096d63abbb97d50a9cafaf9e3e5379a6f5d)
+++ arch/amd64/include/syscall.h	(revision 631ca4d04a2284ebd54da4b84fc569fab1e212a4)
@@ -32,5 +32,6 @@
 #include <arch/types.h>
 
-extern __native syscall_handler(__native id, __native a1, __native a2, __native a3);
+extern __native syscall_handler(__native a1,__native a2, __native a3, 
+				__native a4, __native id);
 extern void syscall_setup_cpu(void);
 
Index: arch/amd64/src/syscall.c
===================================================================
--- arch/amd64/src/syscall.c	(revision 25d77096d63abbb97d50a9cafaf9e3e5379a6f5d)
+++ arch/amd64/src/syscall.c	(revision 631ca4d04a2284ebd54da4b84fc569fab1e212a4)
@@ -64,8 +64,8 @@
 /** Dispatch system call */
 __native syscall_handler(__native a1, __native a2, __native a3,
-			 __native id)
+			 __native a4, __native id)
 {
 	if (id < SYSCALL_END)
-		return syscall_table[id](a1,a2,a3);
+		return syscall_table[id](a1,a2,a3,a4);
 	else
 		panic("Undefined syscall %d", id);
Index: arch/ia32/src/interrupt.c
===================================================================
--- arch/ia32/src/interrupt.c	(revision 25d77096d63abbb97d50a9cafaf9e3e5379a6f5d)
+++ arch/ia32/src/interrupt.c	(revision 631ca4d04a2284ebd54da4b84fc569fab1e212a4)
@@ -108,8 +108,8 @@
 {
 	interrupts_enable();
-	if (istate->edx < SYSCALL_END)
-		istate->eax = syscall_table[istate->edx](istate->eax, istate->ebx, istate->ecx);
+	if (istate->esi < SYSCALL_END)
+		istate->eax = syscall_table[istate->esi](istate->eax, istate->ebx, istate->ecx, istate->edx);
 	else
-		panic("Undefined syscall %d", istate->edx);
+		panic("Undefined syscall %d", istate->esi);
 	interrupts_disable();
 }
Index: arch/mips32/src/exception.c
===================================================================
--- arch/mips32/src/exception.c	(revision 25d77096d63abbb97d50a9cafaf9e3e5379a6f5d)
+++ arch/mips32/src/exception.c	(revision 631ca4d04a2284ebd54da4b84fc569fab1e212a4)
@@ -135,8 +135,9 @@
 {
 	interrupts_enable();
-	if (istate->a3 < SYSCALL_END)
-		istate->v0 = syscall_table[istate->a3](istate->a0,
+	if (istate->t0 < SYSCALL_END)
+		istate->v0 = syscall_table[istate->t0](istate->a0,
 						       istate->a1,
-						       istate->a2);
+						       istate->a2,
+						       istate->a3);
 	else
 		panic("Undefined syscall %d", istate->a3);
