diff --git a/sys/src/cmd/5e/fns.h b/sys/src/cmd/5e/fns.h index 2d28c522e..68d60f785 100644 --- a/sys/src/cmd/5e/fns.h +++ b/sys/src/cmd/5e/fns.h @@ -35,3 +35,4 @@ void invalid(u32int); void fpatransfer(u32int); void fpaoperation(u32int); void fparegtransfer(u32int); +void inittos(void); diff --git a/sys/src/cmd/5e/proc.c b/sys/src/cmd/5e/proc.c index 85768df56..9ef5280ef 100644 --- a/sys/src/cmd/5e/proc.c +++ b/sys/src/cmd/5e/proc.c @@ -108,8 +108,16 @@ initstack(int argc, char **argv) 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 diff --git a/sys/src/cmd/5e/sys.c b/sys/src/cmd/5e/sys.c index 0f9fb1c03..38fd0c076 100644 --- a/sys/src/cmd/5e/sys.c +++ b/sys/src/cmd/5e/sys.c @@ -401,6 +401,7 @@ sysrfork(void) P = p; atexit(cleanup); P->pid = getpid(); + inittos(); addproc(P); } P->R[0] = rc;