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);