]> Devi Nivas Git - cs3210-lab1.git/commitdiff
Fit exec on a page. Again
authorAustin Clements <amdragon@mit.edu>
Fri, 2 Sep 2011 19:27:41 +0000 (15:27 -0400)
committerAustin Clements <amdragon@mit.edu>
Fri, 2 Sep 2011 19:27:41 +0000 (15:27 -0400)
exec.c

diff --git a/exec.c b/exec.c
index 4be65a4911593ff1c36ccc505365bc01db1b82eb..629c433a21c09dc815bef438ab6719bf694a0c8a 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -50,8 +50,7 @@ exec(char *path, char **argv)
   ip = 0;
 
   // Allocate two pages at the next page boundary.
-  // Make the first inaccessible.
-  // Use the second as the user stack.
+  // Make the first inaccessible.  Use the second as the user stack.
   sz = PGROUNDUP(sz);
   if((sz = allocuvm(pgdir, sz, sz + 2*PGSIZE)) == 0)
     goto bad;
@@ -62,8 +61,7 @@ exec(char *path, char **argv)
   for(argc = 0; argv[argc]; argc++) {
     if(argc >= MAXARG)
       goto bad;
-    sp -= strlen(argv[argc]) + 1;
-    sp &= ~3;
+    sp = (sp - strlen(argv[argc]) + 1) & ~3;
     if(copyout(pgdir, sp, argv[argc], strlen(argv[argc]) + 1) < 0)
       goto bad;
     ustack[3+argc] = sp;
@@ -92,7 +90,6 @@ exec(char *path, char **argv)
   proc->tf->esp = sp;
   switchuvm(proc);
   freevm(oldpgdir);
-
   return 0;
 
  bad: