sp 27 kernel/exec.c uint64 argc, sz = 0, sp, ustack[MAXARG], stackbase; sp 87 kernel/exec.c sp = sz; sp 88 kernel/exec.c stackbase = sp - USERSTACK*PGSIZE; sp 94 kernel/exec.c sp -= strlen(argv[argc]) + 1; sp 95 kernel/exec.c sp -= sp % 16; // riscv sp must be 16-byte aligned sp 96 kernel/exec.c if(sp < stackbase) sp 98 kernel/exec.c if(copyout(pagetable, sp, argv[argc], strlen(argv[argc]) + 1) < 0) sp 100 kernel/exec.c ustack[argc] = sp; sp 105 kernel/exec.c sp -= (argc+1) * sizeof(uint64); sp 106 kernel/exec.c sp -= sp % 16; sp 107 kernel/exec.c if(sp < stackbase) sp 109 kernel/exec.c if(copyout(pagetable, sp, (char *)ustack, (argc+1)*sizeof(uint64)) < 0) sp 115 kernel/exec.c p->trapframe->a1 = sp; sp 128 kernel/exec.c p->trapframe->sp = sp; // initial stack pointer sp 147 kernel/proc.c p->context.sp = p->kstack + PGSIZE; sp 247 kernel/proc.c p->trapframe->sp = PGSIZE; // user stack pointer sp 4 kernel/proc.h uint64 sp; sp 50 kernel/proc.h /* 48 */ uint64 sp; sp 2416 user/usertests.c char *sp = (char *) r_sp(); sp 2417 user/usertests.c sp -= USERSTACK*PGSIZE; sp 2419 user/usertests.c printf("%s: stacktest: read below stack %d\n", s, *sp);