dupok, gcc compile fix, sync and syscall asm fix

R=rsc
APPROVED=rsc
DELTA=27  (18 added, 0 deleted, 9 changed)
OCL=35503
CL=35505
diff --git a/src/pkg/syscall/asm_linux_arm.s b/src/pkg/syscall/asm_linux_arm.s
index f7153d5..8aa5f34 100644
--- a/src/pkg/syscall/asm_linux_arm.s
+++ b/src/pkg/syscall/asm_linux_arm.s
@@ -22,7 +22,8 @@
 	SWI		$SYS_syscall
 	MOVW	R0, 20(SP)	// r1
 	MOVW	R1, 24(SP)	// r2
-	MOVW	$0, 28(SP)	// errno
+	MOVW	$0, R0
+	MOVW	R0, 28(SP)	// errno
 	BL		sys·exitsyscall(SB)
 	RET
 
@@ -40,7 +41,8 @@
 	SWI		$SYS_syscall
 	MOVW	R0, 32(SP)	// r1
 	MOVW	R1, 36(SP)	// r2
-	MOVW	$0, 40(SP)	// errno
+	MOVW	$0, R0
+	MOVW	R0, 40(SP)	// errno
 	BL		sys·exitsyscall(SB)
 	RET
 
@@ -53,5 +55,6 @@
 	SWI		$SYS_syscall
 	MOVW	R0, 20(SP)	// r1
 	MOVW	R1, 24(SP)	// r2
-	MOVW	$0, 28(SP)	// errno
+	MOVW	$0, R0
+	MOVW	R0, 28(SP)	// errno
 	RET