diff options
author | glenda <glenda@9front.local> | 2025-05-14 01:33:55 +0000 |
---|---|---|
committer | glenda <glenda@9front.local> | 2025-05-14 01:33:55 +0000 |
commit | a7081490dbeda19788e6374a080ee38606aa3cd3 (patch) | |
tree | 8c440e3611573ee60322e7e84e5204e3e326028a /sys/src/9/mtx | |
parent | 635cb9e7425577dae44eb415ad42e8d3892850b5 (diff) |
kernel: get rid of Proc.kstack
The kernel stack is now above the Proc structure,
so the explicit kstack pointer can be eliminated.
Diffstat (limited to 'sys/src/9/mtx')
-rw-r--r-- | sys/src/9/mtx/l.s | 4 | ||||
-rw-r--r-- | sys/src/9/mtx/trap.c | 10 |
2 files changed, 6 insertions, 8 deletions
diff --git a/sys/src/9/mtx/l.s b/sys/src/9/mtx/l.s index 25e8b4b50..1c07553ee 100644 --- a/sys/src/9/mtx/l.s +++ b/sys/src/9/mtx/l.s @@ -412,9 +412,7 @@ TEXT trapvec(SB), $-4 RLWNM $0, R1, $~KZERO, R1 /* PADDR(m->) */ MOVW 8(R1), R1 /* m->proc */ RLWNM $0, R1, $~KZERO, R1 /* PADDR(m->proc) */ - MOVW 8(R1), R1 /* m->proc->kstack */ - RLWNM $0, R1, $~KZERO, R1 /* PADDR(m->proc->kstack) */ - ADD $(KSTACK-UREGSIZE), R1 + SUB $UREGSIZE, R1 /* make room on stack */ MOVW R0, R2 BL saveureg(SB) BL trap(SB) diff --git a/sys/src/9/mtx/trap.c b/sys/src/9/mtx/trap.c index d82b802c4..962401dd4 100644 --- a/sys/src/9/mtx/trap.c +++ b/sys/src/9/mtx/trap.c @@ -450,8 +450,8 @@ _dumpstack(Ureg *ureg) sl = el-KSTACK; } else{ - sl = (ulong)up->kstack; - el = sl + KSTACK; + el = (ulong)up; + sl = el-KSTACK; } if(l > el || l < sl){ el = (ulong)m+BY2PG; @@ -488,7 +488,7 @@ dumpregs(Ureg *ur) if(up) { print("registers for %s %ld\n", up->text, up->pid); if((ur->srr1 & MSR_PR) == 0) - if(ur->usp < (ulong)up->kstack || ur->usp > (ulong)up->kstack+KSTACK) + if(ur->usp < (ulong)up - KSTACK || ur->usp > (ulong)up) print("invalid stack ptr\n"); } else @@ -504,7 +504,7 @@ void kprocchild(Proc *p, void (*entry)(void)) { p->sched.pc = (ulong)entry; - p->sched.sp = (ulong)p->kstack+KSTACK; + p->sched.sp = (ulong)p; } /* @@ -540,7 +540,7 @@ forkchild(Proc *p, Ureg *ur) { Ureg *cur; - p->sched.sp = (ulong)p->kstack+KSTACK-UREGSIZE; + p->sched.sp = (ulong)p - UREGSIZE; p->sched.pc = (ulong)forkret; cur = (Ureg*)(p->sched.sp+2*BY2WD); |