implement spec: when main.main returns, the program exits

R=r
DELTA=9  (7 added, 2 deleted, 0 changed)
OCL=15628
CL=15643
diff --git a/src/runtime/rt0_amd64.s b/src/runtime/rt0_amd64.s
index 9f354a7..35448e0 100644
--- a/src/runtime/rt0_amd64.s
+++ b/src/runtime/rt0_amd64.s
@@ -37,13 +37,14 @@
 	CALL	schedinit(SB)
 
 	// create a new goroutine to start program
-
 	PUSHQ	$mainstart(SB)		// entry
 	PUSHQ	$16			// arg size
 	CALL	sys·newproc(SB)
+	POPQ	AX
+	POPQ	AX
+	
+	// start this M
 	CALL	mstart(SB)
-	POPQ	AX
-	POPQ	AX
 
 	CALL	notok(SB)		// never returns
 	RET
@@ -52,6 +53,10 @@
 	CALL	main·init_function(SB)
 	CALL	initdone(SB)
 	CALL	main·main(SB)
+	PUSHQ	$0
+	CALL	sys·exit(SB)
+	POPQ	AX
+	CALL	notok(SB)
 	RET
 
 TEXT	sys·breakpoint(SB),7,$0