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/bcm | |
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/bcm')
-rw-r--r-- | sys/src/9/bcm/arch.c | 2 | ||||
-rw-r--r-- | sys/src/9/bcm/trap.c | 13 |
2 files changed, 7 insertions, 8 deletions
diff --git a/sys/src/9/bcm/arch.c b/sys/src/9/bcm/arch.c index fb97a3ea9..a025fe371 100644 --- a/sys/src/9/bcm/arch.c +++ b/sys/src/9/bcm/arch.c @@ -68,7 +68,7 @@ void kprocchild(Proc *p, void (*entry)(void)) { p->sched.pc = (uintptr)entry; - p->sched.sp = (uintptr)p->kstack+KSTACK; + p->sched.sp = (uintptr)p; } /* diff --git a/sys/src/9/bcm/trap.c b/sys/src/9/bcm/trap.c index 4aa44fdbe..01008650b 100644 --- a/sys/src/9/bcm/trap.c +++ b/sys/src/9/bcm/trap.c @@ -138,7 +138,7 @@ trap(Ureg *ureg) assert(!islo()); if(up != nil) - rem = ((char*)ureg)-up->kstack; + rem = ((char*)ureg)-((char*)up - KSTACK); else rem = ((char*)ureg)-((char*)m+sizeof(Mach)); if(rem < 256) { @@ -343,14 +343,14 @@ dumpstackwithureg(Ureg *ureg) ureg->pc, ureg->sp, ureg->r14); delay(2000); i = 0; - if(up != nil && (uintptr)&l <= (uintptr)up->kstack+KSTACK) - estack = (uintptr)up->kstack+KSTACK; + if(up != nil && (uintptr)&l <= (uintptr)up) + estack = (uintptr)up; else if((uintptr)&l >= (uintptr)m->stack && (uintptr)&l <= (uintptr)m+MACHSIZE) estack = (uintptr)m+MACHSIZE; else{ if(up != nil) - iprint("&up->kstack %#p &l %#p\n", up->kstack, &l); + iprint("&up %#p &l %#p\n", up, &l); else iprint("&m %#p &l %#p\n", m, &l); return; @@ -420,10 +420,9 @@ dumpregs(Ureg* ureg) iprint("pc %#lux link %#lux\n", ureg->pc, ureg->link); if(up) - iprint("user stack: %#p-%#p\n", up->kstack, up->kstack+KSTACK-4); + iprint("user stack: %#p-%#p\n", (char*)up - KSTACK, up); else - iprint("kernel stack: %8.8lux-%8.8lux\n", - (ulong)(m+1), (ulong)m+BY2PG-4); + iprint("kernel stack: %8.8lux-%8.8lux\n", (ulong)(m+1), (ulong)m+BY2PG); dumplongs("stack", (ulong *)(ureg + 1), 16); delay(2000); dumpstack(); |