summaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2018-10-09 14:28:54 -0400
committerFrans Kaashoek <[email protected]>2018-10-09 14:28:54 -0400
commit54e6f829e4019e10734588b9ba63c2c186c94f8e (patch)
treec4fae7ef568183e9566d69fb6f563c218c12819b /exec.c
parentf241e67d911d790376de26698f8bf8ba02550212 (diff)
downloadxv6-labs-54e6f829e4019e10734588b9ba63c2c186c94f8e.tar.gz
xv6-labs-54e6f829e4019e10734588b9ba63c2c186c94f8e.tar.bz2
xv6-labs-54e6f829e4019e10734588b9ba63c2c186c94f8e.zip
Separate system call path from trap path. Passes usertests on 1 and 2 cpus.
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/exec.c b/exec.c
index b1a9229..743437a 100644
--- a/exec.c
+++ b/exec.c
@@ -85,8 +85,8 @@ exec(char *path, char **argv)
ustack[1] = argc;
ustack[2] = sp - (argc+1)*sizeof(uint64); // argv pointer
- curproc->tf->rdi = argc;
- curproc->tf->rsi = sp - (argc+1)*sizeof(uint64);
+ curproc->sf->rdi = argc;
+ curproc->sf->rsi = sp - (argc+1)*sizeof(uint64);
sp -= (3+argc+1) * sizeof(uint64);
if(copyout(pgdir, sp, ustack, (3+argc+1)*sizeof(uint64)) < 0)
@@ -102,9 +102,8 @@ exec(char *path, char **argv)
oldpgdir = curproc->pgdir;
curproc->pgdir = pgdir;
curproc->sz = sz;
- curproc->tf->rip = elf.entry; // main
- curproc->tf->rcx = elf.entry;
- curproc->tf->rsp = sp;
+ curproc->sf->rcx = elf.entry; // main
+ curproc->sf->rsp = sp;
switchuvm(curproc);
freevm(oldpgdir, oldsz);
return 0;