Browse Source

Remove remaining remnants of args on stack.

We left the syscallfmt processing of args in for the
first part of this change. It can go away. All args
are in registers.

Change-Id: I792e354107274404a736b6ae6f101abacc27f713
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Ronald G. Minnich 11 years ago
parent
commit
3ff5725cef
1 changed files with 8 additions and 17 deletions
  1. 8 17
      sys/src/nxm/k10/syscall.c

+ 8 - 17
sys/src/nxm/k10/syscall.c

@@ -277,18 +277,15 @@ syscall(int badscallnr, Ureg* ureg)
 	sp = ureg->sp;
 	startns = 0;
 
+	args = (uintptr *)up->arg;
+	args[0] = ureg->di;
+	args[1] = ureg->si;
+	args[2] = ureg->dx;
+	args[3] = ureg->r10;
+	args[4] = ureg->r8;
+
 	if(up->procctl == Proc_tracesyscall){
-		/*
-		 * Redundant validaddr.  Do we care?
-		 * Tracing syscalls is not exactly a fast path...
-		 * Beware, validaddr currently does a pexit rather
-		 * than an error if there's a problem; that might
-		 * change in the future.
-		 */
-		if(sp < (USTKTOP-BIGPGSZ) || sp > (USTKTOP-sizeof(up->arg)-BY2SE))
-			validaddr(UINT2PTR(sp), sizeof(up->arg)+BY2SE, 0);
-
-		syscallfmt(scallnr, (va_list)(sp+BY2SE));
+		syscallfmt(scallnr, (va_list)args);
 		up->procctl = Proc_stopme;
 		procctl(up);
 		if(up->syscalltrace)
@@ -313,12 +310,6 @@ syscall(int badscallnr, Ureg* ureg)
 			error(Ebadarg);
 		}
 
-		args = (uintptr *)up->arg;
-		args[0] = ureg->di;
-		args[1] = ureg->si;
-		args[2] = ureg->dx;
-		args[3] = ureg->r10;
-		args[4] = ureg->r8;
 		up->psstate = systab[scallnr].n;
 
 		systab[scallnr].f(&ar0, (va_list)up->arg);