sp 31 kernel/exec.c uint64 argc, sz = 0, sp, ustack[MAXARG], stackbase; sp 93 kernel/exec.c sp = sz; sp 94 kernel/exec.c stackbase = sp - USERSTACK*PGSIZE; sp 101 kernel/exec.c sp -= strlen(argv[argc]) + 1; sp 102 kernel/exec.c sp -= sp % 16; // riscv sp must be 16-byte aligned sp 103 kernel/exec.c if(sp < stackbase) sp 105 kernel/exec.c if(copyout(pagetable, sp, argv[argc], strlen(argv[argc]) + 1) < 0) sp 107 kernel/exec.c ustack[argc] = sp; sp 112 kernel/exec.c sp -= (argc+1) * sizeof(uint64); sp 113 kernel/exec.c sp -= sp % 16; sp 114 kernel/exec.c if(sp < stackbase) sp 116 kernel/exec.c if(copyout(pagetable, sp, (char *)ustack, (argc+1)*sizeof(uint64)) < 0) sp 122 kernel/exec.c p->trapframe->a1 = sp; sp 135 kernel/exec.c p->trapframe->sp = sp; // initial stack pointer sp 147 kernel/proc.c p->context.sp = p->kstack + PGSIZE; sp 4 kernel/proc.h uint64 sp; sp 50 kernel/proc.h /* 48 */ uint64 sp; sp 2415 user/usertests.c char *sp = (char *) r_sp(); sp 2416 user/usertests.c sp -= USERSTACK*PGSIZE; sp 2418 user/usertests.c printf("%s: stacktest: read below stack %d\n", s, *sp);