diff options
author | Frans Kaashoek <[email protected]> | 2010-08-26 08:03:18 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2010-08-26 08:03:18 -0400 |
commit | d55b2fac074ac23e30c337014f40ae2156b31b60 (patch) | |
tree | bb9885972bf8929e7957f9ea512a8befaf06b11c /exec.c | |
parent | d87f51c5a1c5e7a2a3ba111b1052a297f4f96fb0 (diff) | |
parent | 789b508d538e6faf635e49f268a4f1f9e9b65f05 (diff) | |
download | xv6-labs-d55b2fac074ac23e30c337014f40ae2156b31b60.tar.gz xv6-labs-d55b2fac074ac23e30c337014f40ae2156b31b60.tar.bz2 xv6-labs-d55b2fac074ac23e30c337014f40ae2156b31b60.zip |
Merge commit 'origin/page' into page
Diffstat (limited to 'exec.c')
-rw-r--r-- | exec.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -43,13 +43,16 @@ exec(char *path, char **argv) goto bad; if (!allocuvm(pgdir, (char *)ph.va, ph.memsz)) goto bad; - sz += PGROUNDUP(ph.memsz); + if(ph.va + ph.memsz > sz) + sz = ph.va + ph.memsz; if (!loaduvm(pgdir, (char *)ph.va, ip, ph.offset, ph.filesz)) goto bad; } iunlockput(ip); // Allocate and initialize stack at sz + sz = PGROUNDUP(sz); + sz += PGSIZE; // leave an invalid page if (!allocuvm(pgdir, (char *)sz, PGSIZE)) goto bad; mem = uva2ka(pgdir, (char *)sz); @@ -95,7 +98,7 @@ exec(char *path, char **argv) proc->tf->eip = elf.entry; // main proc->tf->esp = sp; - loadvm(proc); + switchuvm(proc); freevm(oldpgdir); |