summaryrefslogtreecommitdiff
path: root/sys/src/9/sgi
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/sgi
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/sgi')
-rw-r--r--sys/src/9/sgi/l.s2
-rw-r--r--sys/src/9/sgi/main.c2
-rw-r--r--sys/src/9/sgi/trap.c8
3 files changed, 5 insertions, 7 deletions
diff --git a/sys/src/9/sgi/l.s b/sys/src/9/sgi/l.s
index d3fe25d2b..f52276d6f 100644
--- a/sys/src/9/sgi/l.s
+++ b/sys/src/9/sgi/l.s
@@ -442,8 +442,6 @@ waskernel:
wasuser: /* get kernel stack for this user process */
GETMACH (SP)
MOVW 8(SP), SP /* m->proc */
- MOVW 8(SP), SP /* m->proc->kstack */
- ADDU $(KSTACK-UREGSIZE), SP
dosave:
MOVW R31, 0x28(SP)
diff --git a/sys/src/9/sgi/main.c b/sys/src/9/sgi/main.c
index 31d120068..4e0aa75ba 100644
--- a/sys/src/9/sgi/main.c
+++ b/sys/src/9/sgi/main.c
@@ -321,7 +321,7 @@ procsave(Proc *p)
}
void
-procrestore(Proc *p)
+procrestore(Proc *)
{
}
diff --git a/sys/src/9/sgi/trap.c b/sys/src/9/sgi/trap.c
index 2bea55c34..c97ee7d08 100644
--- a/sys/src/9/sgi/trap.c
+++ b/sys/src/9/sgi/trap.c
@@ -160,7 +160,7 @@ trap(Ureg *ur)
char buf[2*ERRMAX], buf1[ERRMAX], *fpexcep;
static int dumps;
- if (up && (char *)(ur) - up->kstack < 1024 && dumps++ == 0) {
+ if (up && (char *)(ur) - ((char *)up - KSTACK) < 1024 && dumps++ == 0) {
iprint("trap: proc %ld kernel stack getting full\n", up->pid);
dumpregs(ur);
dumpstack();
@@ -421,7 +421,7 @@ _dumpstack(Ureg *ureg)
if(up == nil)
top = (ulong)MACHADDR + MACHSIZE;
else
- top = (ulong)up->kstack + KSTACK;
+ top = (ulong)up;
i = 0;
for(l=ureg->sp; l < top; l += BY2WD) {
v = *(ulong*)l;
@@ -764,7 +764,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);
@@ -780,7 +780,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;
}
/* set up user registers before return from exec() */