Commit Diff


commit - e544651cc7662639c1feab89b31932e69be2c52a
commit + 10495dd32468a290704d0bd15346e7f66efce3d1
blob - 12d180e5878e4bfa9583ffe183c5110b84c4ba81
blob + 21f6041d9ab7fb2c911a5a0fa21df98292a29255
--- src/libthread/PowerMacintosh.c
+++ src/libthread/PowerMacintosh.c
@@ -25,3 +25,15 @@ _threadinitstack(Thread *t, void (*f)(void*), void *ar
 	t->sched.sp = (ulong)tos-80;
 }
 
+void
+_threadinswitch(int enter)
+{
+	USED(enter);
+}
+
+void
+_threadstacklimit(void *addr)
+{
+	USED(addr);
+}
+
blob - a4a90d8b12408f9f3ee564295e8e04c6c1890c64
blob + 3d4dfcaca462d88ba6f09f7809c986451c718fd1
--- src/libthread/exec-unix.c
+++ src/libthread/exec-unix.c
@@ -115,7 +115,8 @@ threadexecl(Channel *pidc, int fd[3], char *f, ...)
 	args[n] = 0;
 	va_end(arg);
 
-	_threadexec(pidc, fd, f, args, 1);
+	if(_threadexec(pidc, fd, f, args, 1) >= 0)
+		threadexits(nil);
 }
 
 static void
blob - 0c298c627142333a22313f35156afda51e76464c
blob + 6312dac9b80f478cd83b9e68aeb9b15a035d238f
--- src/libthread/sun4u.c
+++ src/libthread/sun4u.c
@@ -39,3 +39,15 @@ _threadinitstack(Thread *t, void (*f)(void*), void *ar
 	if(0) print("tis %x %x at %x\n", f, arg, t->sched.sp);
 }
 
+void
+_threadinswitch(int enter)
+{
+	USED(enter);
+}
+
+void
+_threadstacklimit(void *addr)
+{
+	USED(addr);
+}
+