ref: 6698436b27db607cabffd01648320a384a5eb110
parent: 8588e5d811ffcc277a2fa47da98888075f0f3d50
author: aiju <aiju@phicode.de>
date: Sun Jun 26 09:37:14 EDT 2011
5e: fix _tos->pid / libthread bug
--- a/sys/src/cmd/5e/fns.h
+++ b/sys/src/cmd/5e/fns.h
@@ -35,3 +35,4 @@
void fpatransfer(u32int);
void fpaoperation(u32int);
void fparegtransfer(u32int);
+void inittos(void);
--- a/sys/src/cmd/5e/proc.c
+++ b/sys/src/cmd/5e/proc.c
@@ -108,8 +108,16 @@
ap += len;
}
*(ulong *) vaddrnol(sp, 4) = 0;
+ inittos();
+}
- ((Tos *) vaddrnol(tos, sizeof(Tos)))->pid = getpid();
+void
+inittos(void)
+{+ ulong tos;
+
+ tos = mach->utop - sizeof(Tos) * 2;
+ ((Tos *) vaddrnol(tos, sizeof(Tos)))->pid = P->pid;
}
static int
--- a/sys/src/cmd/5e/sys.c
+++ b/sys/src/cmd/5e/sys.c
@@ -401,6 +401,7 @@
P = p;
atexit(cleanup);
P->pid = getpid();
+ inittos();
addproc(P);
}
P->R[0] = rc;
--
⑨