the code to exit the new thread/process after the start function returns was mixed up in its syscall convention.
@@ -27,8 +27,7 @@ clone:
bne 1f
mov lr,pc
mov pc,r5
-2: mov r1,r0
- mov r0,#1
+2: mov r7,#1
svc 0
1: mov lr,pc