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 - 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               2408 user/usertests.c     char *sp = (char *) r_sp();
sp               2409 user/usertests.c     sp -= PGSIZE;
sp               2411 user/usertests.c     printf("%s: stacktest: read below stack %p\n", s, *sp);