sp 32 kernel/exec.c uint64 argc, sz = 0, sp, ustack[MAXARG], stackbase; sp 96 kernel/exec.c sp = sz; sp 97 kernel/exec.c stackbase = sp - USERSTACK * PGSIZE; sp 102 kernel/exec.c sp -= strlen(argv[argc]) + 1; sp 103 kernel/exec.c sp -= sp % 16; // riscv sp must be 16-byte aligned sp 104 kernel/exec.c if (sp < stackbase) sp 106 kernel/exec.c if (copyout(pagetable, sz, sp, argv[argc], strlen(argv[argc]) + 1) < 0) sp 108 kernel/exec.c ustack[argc] = sp; sp 113 kernel/exec.c sp -= (argc + 1) * sizeof(uint64); sp 114 kernel/exec.c sp -= sp % 16; sp 115 kernel/exec.c if (sp < stackbase) sp 117 kernel/exec.c if (copyout(pagetable, sz, sp, (char *)ustack, (argc + 1) * sizeof(uint64)) < sp 124 kernel/exec.c p->trapframe->a1 = sp; sp 137 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 47 kernel/proc.h /* 48 */ uint64 sp; sp 2449 user/usertests.c char *sp = (char *)r_sp(); sp 2450 user/usertests.c sp -= USERSTACK * PGSIZE; sp 2452 user/usertests.c printf("%s: stacktest: read below stack %d\n", s, *sp);