summaryrefslogtreecommitdiff
path: root/sys/src/9/bcm
diff options
context:
space:
mode:
authorglenda <glenda@9front.local>2025-05-14 01:33:55 +0000
committerglenda <glenda@9front.local>2025-05-14 01:33:55 +0000
commita7081490dbeda19788e6374a080ee38606aa3cd3 (patch)
tree8c440e3611573ee60322e7e84e5204e3e326028a /sys/src/9/bcm
parent635cb9e7425577dae44eb415ad42e8d3892850b5 (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.c2
-rw-r--r--sys/src/9/bcm/trap.c13
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();