@@ -41,6 +41,8 @@ TEXT _main(SB),NOSPLIT,$-8
4141 MOVD R12, CTR
4242 BR (CTR)
4343
44+ // Paramater save space required to cross-call into _cgo_sys_thread_create
45+ #define PARAM_SPACE 16
4446
4547TEXT _rt0_ppc64_aix_lib(SB),NOSPLIT,$-8
4648 // Start with standard C stack frame layout and linkage.
@@ -49,45 +51,45 @@ TEXT _rt0_ppc64_aix_lib(SB),NOSPLIT,$-8
4951 MOVW CR, R0 // Save CR in caller's frame
5052 MOVD R0, 8 (R1)
5153
52- MOVDU R1, -344 (R1) // Allocate frame.
54+ MOVDU R1, -344 -PARAM_SPACE (R1) // Allocate frame.
5355
5456 // Preserve callee-save registers.
55- MOVD R14, 48 (R1)
56- MOVD R15, 56 (R1)
57- MOVD R16, 64 (R1)
58- MOVD R17, 72 (R1)
59- MOVD R18, 80 (R1)
60- MOVD R19, 88 (R1)
61- MOVD R20, 96 (R1)
62- MOVD R21,104 (R1)
63- MOVD R22, 112 (R1)
64- MOVD R23, 120 (R1)
65- MOVD R24, 128 (R1)
66- MOVD R25, 136 (R1)
67- MOVD R26, 144 (R1)
68- MOVD R27, 152 (R1)
69- MOVD R28, 160 (R1)
70- MOVD R29, 168 (R1)
71- MOVD g, 176 (R1) // R30
72- MOVD R31, 184 (R1)
73- FMOVD F14, 192 (R1)
74- FMOVD F15, 200 (R1)
75- FMOVD F16, 208 (R1)
76- FMOVD F17, 216 (R1)
77- FMOVD F18, 224 (R1)
78- FMOVD F19, 232 (R1)
79- FMOVD F20, 240 (R1)
80- FMOVD F21, 248 (R1)
81- FMOVD F22, 256 (R1)
82- FMOVD F23, 264 (R1)
83- FMOVD F24, 272 (R1)
84- FMOVD F25, 280 (R1)
85- FMOVD F26, 288 (R1)
86- FMOVD F27, 296 (R1)
87- FMOVD F28, 304 (R1)
88- FMOVD F29, 312 (R1)
89- FMOVD F30, 320 (R1)
90- FMOVD F31, 328 (R1)
57+ MOVD R14, 48 +PARAM_SPACE (R1)
58+ MOVD R15, 56 +PARAM_SPACE (R1)
59+ MOVD R16, 64 +PARAM_SPACE (R1)
60+ MOVD R17, 72 +PARAM_SPACE (R1)
61+ MOVD R18, 80 +PARAM_SPACE (R1)
62+ MOVD R19, 88 +PARAM_SPACE (R1)
63+ MOVD R20, 96 +PARAM_SPACE (R1)
64+ MOVD R21,104 +PARAM_SPACE (R1)
65+ MOVD R22, 112 +PARAM_SPACE (R1)
66+ MOVD R23, 120 +PARAM_SPACE (R1)
67+ MOVD R24, 128 +PARAM_SPACE (R1)
68+ MOVD R25, 136 +PARAM_SPACE (R1)
69+ MOVD R26, 144 +PARAM_SPACE (R1)
70+ MOVD R27, 152 +PARAM_SPACE (R1)
71+ MOVD R28, 160 +PARAM_SPACE (R1)
72+ MOVD R29, 168 +PARAM_SPACE (R1)
73+ MOVD g, 176 +PARAM_SPACE (R1) // R30
74+ MOVD R31, 184 +PARAM_SPACE (R1)
75+ FMOVD F14, 192 +PARAM_SPACE (R1)
76+ FMOVD F15, 200 +PARAM_SPACE (R1)
77+ FMOVD F16, 208 +PARAM_SPACE (R1)
78+ FMOVD F17, 216 +PARAM_SPACE (R1)
79+ FMOVD F18, 224 +PARAM_SPACE (R1)
80+ FMOVD F19, 232 +PARAM_SPACE (R1)
81+ FMOVD F20, 240 +PARAM_SPACE (R1)
82+ FMOVD F21, 248 +PARAM_SPACE (R1)
83+ FMOVD F22, 256 +PARAM_SPACE (R1)
84+ FMOVD F23, 264 +PARAM_SPACE (R1)
85+ FMOVD F24, 272 +PARAM_SPACE (R1)
86+ FMOVD F25, 280 +PARAM_SPACE (R1)
87+ FMOVD F26, 288 +PARAM_SPACE (R1)
88+ FMOVD F27, 296 +PARAM_SPACE (R1)
89+ FMOVD F28, 304 +PARAM_SPACE (R1)
90+ FMOVD F29, 312 +PARAM_SPACE (R1)
91+ FMOVD F30, 320 +PARAM_SPACE (R1)
92+ FMOVD F31, 328 +PARAM_SPACE (R1)
9193
9294 // Synchronous initialization.
9395 MOVD $runtime·reginit(SB), R12
@@ -130,44 +132,44 @@ nocgo:
130132
131133done:
132134 // Restore saved registers.
133- MOVD 48 (R1), R14
134- MOVD 56 (R1), R15
135- MOVD 64 (R1), R16
136- MOVD 72 (R1), R17
137- MOVD 80 (R1), R18
138- MOVD 88 (R1), R19
139- MOVD 96 (R1), R20
140- MOVD 104 (R1), R21
141- MOVD 112 (R1), R22
142- MOVD 120 (R1), R23
143- MOVD 128 (R1), R24
144- MOVD 136 (R1), R25
145- MOVD 144 (R1), R26
146- MOVD 152 (R1), R27
147- MOVD 160 (R1), R28
148- MOVD 168 (R1), R29
149- MOVD 176 (R1), g // R30
150- MOVD 184 (R1), R31
151- FMOVD 196 (R1), F14
152- FMOVD 200 (R1), F15
153- FMOVD 208 (R1), F16
154- FMOVD 216 (R1), F17
155- FMOVD 224 (R1), F18
156- FMOVD 232 (R1), F19
157- FMOVD 240 (R1), F20
158- FMOVD 248 (R1), F21
159- FMOVD 256 (R1), F22
160- FMOVD 264 (R1), F23
161- FMOVD 272 (R1), F24
162- FMOVD 280 (R1), F25
163- FMOVD 288 (R1), F26
164- FMOVD 296 (R1), F27
165- FMOVD 304 (R1), F28
166- FMOVD 312 (R1), F29
167- FMOVD 320 (R1), F30
168- FMOVD 328 (R1), F31
169-
170- ADD $344 , R1
135+ MOVD 48 +PARAM_SPACE (R1), R14
136+ MOVD 56 +PARAM_SPACE (R1), R15
137+ MOVD 64 +PARAM_SPACE (R1), R16
138+ MOVD 72 +PARAM_SPACE (R1), R17
139+ MOVD 80 +PARAM_SPACE (R1), R18
140+ MOVD 88 +PARAM_SPACE (R1), R19
141+ MOVD 96 +PARAM_SPACE (R1), R20
142+ MOVD 104 +PARAM_SPACE (R1), R21
143+ MOVD 112 +PARAM_SPACE (R1), R22
144+ MOVD 120 +PARAM_SPACE (R1), R23
145+ MOVD 128 +PARAM_SPACE (R1), R24
146+ MOVD 136 +PARAM_SPACE (R1), R25
147+ MOVD 144 +PARAM_SPACE (R1), R26
148+ MOVD 152 +PARAM_SPACE (R1), R27
149+ MOVD 160 +PARAM_SPACE (R1), R28
150+ MOVD 168 +PARAM_SPACE (R1), R29
151+ MOVD 176 +PARAM_SPACE (R1), g // R30
152+ MOVD 184 +PARAM_SPACE (R1), R31
153+ FMOVD 196 +PARAM_SPACE (R1), F14
154+ FMOVD 200 +PARAM_SPACE (R1), F15
155+ FMOVD 208 +PARAM_SPACE (R1), F16
156+ FMOVD 216 +PARAM_SPACE (R1), F17
157+ FMOVD 224 +PARAM_SPACE (R1), F18
158+ FMOVD 232 +PARAM_SPACE (R1), F19
159+ FMOVD 240 +PARAM_SPACE (R1), F20
160+ FMOVD 248 +PARAM_SPACE (R1), F21
161+ FMOVD 256 +PARAM_SPACE (R1), F22
162+ FMOVD 264 +PARAM_SPACE (R1), F23
163+ FMOVD 272 +PARAM_SPACE (R1), F24
164+ FMOVD 280 +PARAM_SPACE (R1), F25
165+ FMOVD 288 +PARAM_SPACE (R1), F26
166+ FMOVD 296 +PARAM_SPACE (R1), F27
167+ FMOVD 304 +PARAM_SPACE (R1), F28
168+ FMOVD 312 +PARAM_SPACE (R1), F29
169+ FMOVD 320 +PARAM_SPACE (R1), F30
170+ FMOVD 328 +PARAM_SPACE (R1), F31
171+
172+ ADD $344 +PARAM_SPACE , R1
171173
172174 MOVD 8 (R1), R0
173175 MOVFL R0, $0xff
0 commit comments