102
102
if(r != KERN_SUCCESS) ABORT("thread_get_state failed");
104
104
#if defined(I386)
106
/* In Leopard, the registers get a prefix */
109
GC_push_one(state.__eax);
110
GC_push_one(state.__ebx);
111
GC_push_one(state.__ecx);
112
GC_push_one(state.__edx);
113
GC_push_one(state.__edi);
114
GC_push_one(state.__esi);
115
GC_push_one(state.__ebp);
107
119
GC_push_one(state.eax);
111
123
GC_push_one(state.edi);
112
124
GC_push_one(state.esi);
113
125
GC_push_one(state.ebp);
114
127
#elif defined(POWERPC)
129
/* In Leopard, the registers get a prefix */
130
lo = (void*)(state.__r1 - PPC_RED_ZONE_SIZE);
132
GC_push_one(state.__r0);
133
GC_push_one(state.__r2);
134
GC_push_one(state.__r3);
135
GC_push_one(state.__r4);
136
GC_push_one(state.__r5);
137
GC_push_one(state.__r6);
138
GC_push_one(state.__r7);
139
GC_push_one(state.__r8);
140
GC_push_one(state.__r9);
141
GC_push_one(state.__r10);
142
GC_push_one(state.__r11);
143
GC_push_one(state.__r12);
144
GC_push_one(state.__r13);
145
GC_push_one(state.__r14);
146
GC_push_one(state.__r15);
147
GC_push_one(state.__r16);
148
GC_push_one(state.__r17);
149
GC_push_one(state.__r18);
150
GC_push_one(state.__r19);
151
GC_push_one(state.__r20);
152
GC_push_one(state.__r21);
153
GC_push_one(state.__r22);
154
GC_push_one(state.__r23);
155
GC_push_one(state.__r24);
156
GC_push_one(state.__r25);
157
GC_push_one(state.__r26);
158
GC_push_one(state.__r27);
159
GC_push_one(state.__r28);
160
GC_push_one(state.__r29);
161
GC_push_one(state.__r30);
162
GC_push_one(state.__r31);
115
164
lo = (void*)(state.r1 - PPC_RED_ZONE_SIZE);
117
166
GC_push_one(state.r0);
199
249
(natural_t *)&info, &outCount);
200
250
if(r != KERN_SUCCESS) ABORT("task_get_state failed");
253
/* In Leopard, the registers get a prefix */
254
lo = (void*)(info.__r1 - PPC_RED_ZONE_SIZE);
255
hi = (ptr_t)FindTopOfStack(info.__r1);
257
GC_push_one(info.__r0);
258
GC_push_one(info.__r2);
259
GC_push_one(info.__r3);
260
GC_push_one(info.__r4);
261
GC_push_one(info.__r5);
262
GC_push_one(info.__r6);
263
GC_push_one(info.__r7);
264
GC_push_one(info.__r8);
265
GC_push_one(info.__r9);
266
GC_push_one(info.__r10);
267
GC_push_one(info.__r11);
268
GC_push_one(info.__r12);
269
GC_push_one(info.__r13);
270
GC_push_one(info.__r14);
271
GC_push_one(info.__r15);
272
GC_push_one(info.__r16);
273
GC_push_one(info.__r17);
274
GC_push_one(info.__r18);
275
GC_push_one(info.__r19);
276
GC_push_one(info.__r20);
277
GC_push_one(info.__r21);
278
GC_push_one(info.__r22);
279
GC_push_one(info.__r23);
280
GC_push_one(info.__r24);
281
GC_push_one(info.__r25);
282
GC_push_one(info.__r26);
283
GC_push_one(info.__r27);
284
GC_push_one(info.__r28);
285
GC_push_one(info.__r29);
286
GC_push_one(info.__r30);
287
GC_push_one(info.__r31);
202
289
lo = (void*)(info.r1 - PPC_RED_ZONE_SIZE);
203
290
hi = (ptr_t)FindTopOfStack(info.r1);
245
334
lo = (void*)info.esp;
246
335
hi = (ptr_t)FindTopOfStack(info.esp);
338
/* In Leopard, the registers get a prefix */
339
GC_push_one(info.__eax);
340
GC_push_one(info.__ebx);
341
GC_push_one(info.__ecx);
342
GC_push_one(info.__edx);
343
GC_push_one(info.__edi);
344
GC_push_one(info.__esi);
345
/* GC_push_one(info.__ebp); */
346
/* GC_push_one(info.__esp); */
347
GC_push_one(info.__ss);
348
GC_push_one(info.__eip);
349
GC_push_one(info.__cs);
350
GC_push_one(info.__ds);
351
GC_push_one(info.__es);
352
GC_push_one(info.__fs);
353
GC_push_one(info.__gs);
248
355
GC_push_one(info.eax);
249
356
GC_push_one(info.ebx);
250
357
GC_push_one(info.ecx);