diff --git a/src/runtime/rt0_aix_ppc64.s b/src/runtime/rt0_aix_ppc64.s
index 1670a809862a2bdd0345171737804fa52112b2a4..74c57bb1dc9136bc7317e579dd7bab8eb070efd9 100644
--- a/src/runtime/rt0_aix_ppc64.s
+++ b/src/runtime/rt0_aix_ppc64.s
@@ -41,6 +41,8 @@ TEXT _main(SB),NOSPLIT,$-8
 	MOVD R12, CTR
 	BR (CTR)
 
+// Paramater save space required to cross-call into _cgo_sys_thread_create
+#define PARAM_SPACE 16
 
 TEXT _rt0_ppc64_aix_lib(SB),NOSPLIT,$-8
 	// Start with standard C stack frame layout and linkage.
@@ -49,45 +51,45 @@ TEXT _rt0_ppc64_aix_lib(SB),NOSPLIT,$-8
 	MOVW	CR, R0	   // Save CR in caller's frame
 	MOVD	R0, 8(R1)
 
-	MOVDU	R1, -344(R1) // Allocate frame.
+	MOVDU	R1, -344-PARAM_SPACE(R1) // Allocate frame.
 
 	// Preserve callee-save registers.
-	MOVD	R14, 48(R1)
-	MOVD	R15, 56(R1)
-	MOVD	R16, 64(R1)
-	MOVD	R17, 72(R1)
-	MOVD	R18, 80(R1)
-	MOVD	R19, 88(R1)
-	MOVD	R20, 96(R1)
-	MOVD	R21,104(R1)
-	MOVD	R22, 112(R1)
-	MOVD	R23, 120(R1)
-	MOVD	R24, 128(R1)
-	MOVD	R25, 136(R1)
-	MOVD	R26, 144(R1)
-	MOVD	R27, 152(R1)
-	MOVD	R28, 160(R1)
-	MOVD	R29, 168(R1)
-	MOVD	g, 176(R1) // R30
-	MOVD	R31, 184(R1)
-	FMOVD	F14, 192(R1)
-	FMOVD	F15, 200(R1)
-	FMOVD	F16, 208(R1)
-	FMOVD	F17, 216(R1)
-	FMOVD	F18, 224(R1)
-	FMOVD	F19, 232(R1)
-	FMOVD	F20, 240(R1)
-	FMOVD	F21, 248(R1)
-	FMOVD	F22, 256(R1)
-	FMOVD	F23, 264(R1)
-	FMOVD	F24, 272(R1)
-	FMOVD	F25, 280(R1)
-	FMOVD	F26, 288(R1)
-	FMOVD	F27, 296(R1)
-	FMOVD	F28, 304(R1)
-	FMOVD	F29, 312(R1)
-	FMOVD	F30, 320(R1)
-	FMOVD	F31, 328(R1)
+	MOVD	R14, 48+PARAM_SPACE(R1)
+	MOVD	R15, 56+PARAM_SPACE(R1)
+	MOVD	R16, 64+PARAM_SPACE(R1)
+	MOVD	R17, 72+PARAM_SPACE(R1)
+	MOVD	R18, 80+PARAM_SPACE(R1)
+	MOVD	R19, 88+PARAM_SPACE(R1)
+	MOVD	R20, 96+PARAM_SPACE(R1)
+	MOVD	R21,104+PARAM_SPACE(R1)
+	MOVD	R22, 112+PARAM_SPACE(R1)
+	MOVD	R23, 120+PARAM_SPACE(R1)
+	MOVD	R24, 128+PARAM_SPACE(R1)
+	MOVD	R25, 136+PARAM_SPACE(R1)
+	MOVD	R26, 144+PARAM_SPACE(R1)
+	MOVD	R27, 152+PARAM_SPACE(R1)
+	MOVD	R28, 160+PARAM_SPACE(R1)
+	MOVD	R29, 168+PARAM_SPACE(R1)
+	MOVD	g, 176+PARAM_SPACE(R1) // R30
+	MOVD	R31, 184+PARAM_SPACE(R1)
+	FMOVD	F14, 192+PARAM_SPACE(R1)
+	FMOVD	F15, 200+PARAM_SPACE(R1)
+	FMOVD	F16, 208+PARAM_SPACE(R1)
+	FMOVD	F17, 216+PARAM_SPACE(R1)
+	FMOVD	F18, 224+PARAM_SPACE(R1)
+	FMOVD	F19, 232+PARAM_SPACE(R1)
+	FMOVD	F20, 240+PARAM_SPACE(R1)
+	FMOVD	F21, 248+PARAM_SPACE(R1)
+	FMOVD	F22, 256+PARAM_SPACE(R1)
+	FMOVD	F23, 264+PARAM_SPACE(R1)
+	FMOVD	F24, 272+PARAM_SPACE(R1)
+	FMOVD	F25, 280+PARAM_SPACE(R1)
+	FMOVD	F26, 288+PARAM_SPACE(R1)
+	FMOVD	F27, 296+PARAM_SPACE(R1)
+	FMOVD	F28, 304+PARAM_SPACE(R1)
+	FMOVD	F29, 312+PARAM_SPACE(R1)
+	FMOVD	F30, 320+PARAM_SPACE(R1)
+	FMOVD	F31, 328+PARAM_SPACE(R1)
 
 	// Synchronous initialization.
 	MOVD	$runtime·reginit(SB), R12
@@ -130,44 +132,44 @@ nocgo:
 
 done:
 	// Restore saved registers.
-	MOVD	48(R1), R14
-	MOVD	56(R1), R15
-	MOVD	64(R1), R16
-	MOVD	72(R1), R17
-	MOVD	80(R1), R18
-	MOVD	88(R1), R19
-	MOVD	96(R1), R20
-	MOVD	104(R1), R21
-	MOVD	112(R1), R22
-	MOVD	120(R1), R23
-	MOVD	128(R1), R24
-	MOVD	136(R1), R25
-	MOVD	144(R1), R26
-	MOVD	152(R1), R27
-	MOVD	160(R1), R28
-	MOVD	168(R1), R29
-	MOVD	176(R1), g // R30
-	MOVD	184(R1), R31
-	FMOVD	196(R1), F14
-	FMOVD	200(R1), F15
-	FMOVD	208(R1), F16
-	FMOVD	216(R1), F17
-	FMOVD	224(R1), F18
-	FMOVD	232(R1), F19
-	FMOVD	240(R1), F20
-	FMOVD	248(R1), F21
-	FMOVD	256(R1), F22
-	FMOVD	264(R1), F23
-	FMOVD	272(R1), F24
-	FMOVD	280(R1), F25
-	FMOVD	288(R1), F26
-	FMOVD	296(R1), F27
-	FMOVD	304(R1), F28
-	FMOVD	312(R1), F29
-	FMOVD	320(R1), F30
-	FMOVD	328(R1), F31
-
-	ADD	$344, R1
+	MOVD	48+PARAM_SPACE(R1), R14
+	MOVD	56+PARAM_SPACE(R1), R15
+	MOVD	64+PARAM_SPACE(R1), R16
+	MOVD	72+PARAM_SPACE(R1), R17
+	MOVD	80+PARAM_SPACE(R1), R18
+	MOVD	88+PARAM_SPACE(R1), R19
+	MOVD	96+PARAM_SPACE(R1), R20
+	MOVD	104+PARAM_SPACE(R1), R21
+	MOVD	112+PARAM_SPACE(R1), R22
+	MOVD	120+PARAM_SPACE(R1), R23
+	MOVD	128+PARAM_SPACE(R1), R24
+	MOVD	136+PARAM_SPACE(R1), R25
+	MOVD	144+PARAM_SPACE(R1), R26
+	MOVD	152+PARAM_SPACE(R1), R27
+	MOVD	160+PARAM_SPACE(R1), R28
+	MOVD	168+PARAM_SPACE(R1), R29
+	MOVD	176+PARAM_SPACE(R1), g // R30
+	MOVD	184+PARAM_SPACE(R1), R31
+	FMOVD	196+PARAM_SPACE(R1), F14
+	FMOVD	200+PARAM_SPACE(R1), F15
+	FMOVD	208+PARAM_SPACE(R1), F16
+	FMOVD	216+PARAM_SPACE(R1), F17
+	FMOVD	224+PARAM_SPACE(R1), F18
+	FMOVD	232+PARAM_SPACE(R1), F19
+	FMOVD	240+PARAM_SPACE(R1), F20
+	FMOVD	248+PARAM_SPACE(R1), F21
+	FMOVD	256+PARAM_SPACE(R1), F22
+	FMOVD	264+PARAM_SPACE(R1), F23
+	FMOVD	272+PARAM_SPACE(R1), F24
+	FMOVD	280+PARAM_SPACE(R1), F25
+	FMOVD	288+PARAM_SPACE(R1), F26
+	FMOVD	296+PARAM_SPACE(R1), F27
+	FMOVD	304+PARAM_SPACE(R1), F28
+	FMOVD	312+PARAM_SPACE(R1), F29
+	FMOVD	320+PARAM_SPACE(R1), F30
+	FMOVD	328+PARAM_SPACE(R1), F31
+
+	ADD	$344+PARAM_SPACE, R1
 
 	MOVD	8(R1), R0
 	MOVFL	R0, $0xff