-# ifdef MIPS
- if (thread_table[i].context.IntSp >= (DWORD)thread_table[i].stack
- || thread_table[i].context.IntSp < (DWORD)bottom)
- ABORT("Thread stack pointer out of range");
- GC_push_one ((word) thread_table[i].context.IntAt);
- GC_push_one ((word) thread_table[i].context.IntV0);
- GC_push_one ((word) thread_table[i].context.IntV1);
- GC_push_one ((word) thread_table[i].context.IntA0);
- GC_push_one ((word) thread_table[i].context.IntA1);
- GC_push_one ((word) thread_table[i].context.IntA2);
- GC_push_one ((word) thread_table[i].context.IntA3);
- GC_push_one ((word) thread_table[i].context.IntT0);
- GC_push_one ((word) thread_table[i].context.IntT1);
- GC_push_one ((word) thread_table[i].context.IntT2);
- GC_push_one ((word) thread_table[i].context.IntT3);
- GC_push_one ((word) thread_table[i].context.IntT4);
- GC_push_one ((word) thread_table[i].context.IntT5);
- GC_push_one ((word) thread_table[i].context.IntT6);
- GC_push_one ((word) thread_table[i].context.IntT7);
- GC_push_one ((word) thread_table[i].context.IntS0);
- GC_push_one ((word) thread_table[i].context.IntS1);
- GC_push_one ((word) thread_table[i].context.IntS2);
- GC_push_one ((word) thread_table[i].context.IntS3);
- GC_push_one ((word) thread_table[i].context.IntS4);
- GC_push_one ((word) thread_table[i].context.IntS5);
- GC_push_one ((word) thread_table[i].context.IntS6);
- GC_push_one ((word) thread_table[i].context.IntS7);
- GC_push_one ((word) thread_table[i].context.IntT8);
- GC_push_one ((word) thread_table[i].context.IntT9);
- GC_push_one ((word) thread_table[i].context.IntK0);
- GC_push_one ((word) thread_table[i].context.IntK1);
- GC_push_one ((word) thread_table[i].context.IntS8);
- GC_push_all_stack((char *) thread_table[i].context.IntSp,
- thread_table[i].stack);
-# else
-# ifdef PPC
- if (thread_table[i].context.Gpr1 >= (DWORD)thread_table[i].stack
- || thread_table[i].context.Gpr1 < (DWORD)bottom)
- ABORT("Thread stack pointer out of range");
- GC_push_one ((word) thread_table[i].context.Gpr0);
- /* Gpr1 is stack pointer */
- /* Gpr2 is global pointer */
- GC_push_one ((word) thread_table[i].context.Gpr3);
- GC_push_one ((word) thread_table[i].context.Gpr4);
- GC_push_one ((word) thread_table[i].context.Gpr5);
- GC_push_one ((word) thread_table[i].context.Gpr6);
- GC_push_one ((word) thread_table[i].context.Gpr7);
- GC_push_one ((word) thread_table[i].context.Gpr8);
- GC_push_one ((word) thread_table[i].context.Gpr9);
- GC_push_one ((word) thread_table[i].context.Gpr10);
- GC_push_one ((word) thread_table[i].context.Gpr11);
- GC_push_one ((word) thread_table[i].context.Gpr12);
- /* Gpr13 is reserved for the kernel */
- GC_push_one ((word) thread_table[i].context.Gpr14);
- GC_push_one ((word) thread_table[i].context.Gpr15);
- GC_push_one ((word) thread_table[i].context.Gpr16);
- GC_push_one ((word) thread_table[i].context.Gpr17);
- GC_push_one ((word) thread_table[i].context.Gpr18);
- GC_push_one ((word) thread_table[i].context.Gpr19);
- GC_push_one ((word) thread_table[i].context.Gpr20);
- GC_push_one ((word) thread_table[i].context.Gpr21);
- GC_push_one ((word) thread_table[i].context.Gpr22);
- GC_push_one ((word) thread_table[i].context.Gpr23);
- GC_push_one ((word) thread_table[i].context.Gpr24);
- GC_push_one ((word) thread_table[i].context.Gpr25);
- GC_push_one ((word) thread_table[i].context.Gpr26);
- GC_push_one ((word) thread_table[i].context.Gpr27);
- GC_push_one ((word) thread_table[i].context.Gpr28);
- GC_push_one ((word) thread_table[i].context.Gpr29);
- GC_push_one ((word) thread_table[i].context.Gpr30);
- GC_push_one ((word) thread_table[i].context.Gpr31);
- GC_push_all_stack((char *) thread_table[i].context.Gpr1,
- thread_table[i].stack);
-# else
-# ifdef ALPHA
- if (thread_table[i].context.IntSp >= (DWORD)thread_table[i].stack
- || thread_table[i].context.IntSp < (DWORD)bottom)
- ABORT("Thread stack pointer out of range");
- GC_push_one ((word) thread_table[i].context.IntV0);
- GC_push_one ((word) thread_table[i].context.IntT0);
- GC_push_one ((word) thread_table[i].context.IntT1);
- GC_push_one ((word) thread_table[i].context.IntT2);
- GC_push_one ((word) thread_table[i].context.IntT3);
- GC_push_one ((word) thread_table[i].context.IntT4);
- GC_push_one ((word) thread_table[i].context.IntT5);
- GC_push_one ((word) thread_table[i].context.IntT6);
- GC_push_one ((word) thread_table[i].context.IntT7);
- GC_push_one ((word) thread_table[i].context.IntS0);
- GC_push_one ((word) thread_table[i].context.IntS1);
- GC_push_one ((word) thread_table[i].context.IntS2);
- GC_push_one ((word) thread_table[i].context.IntS3);
- GC_push_one ((word) thread_table[i].context.IntS4);
- GC_push_one ((word) thread_table[i].context.IntS5);
- GC_push_one ((word) thread_table[i].context.IntFp);
- GC_push_one ((word) thread_table[i].context.IntA0);
- GC_push_one ((word) thread_table[i].context.IntA1);
- GC_push_one ((word) thread_table[i].context.IntA2);
- GC_push_one ((word) thread_table[i].context.IntA3);
- GC_push_one ((word) thread_table[i].context.IntA4);
- GC_push_one ((word) thread_table[i].context.IntA5);
- GC_push_one ((word) thread_table[i].context.IntT8);
- GC_push_one ((word) thread_table[i].context.IntT9);
- GC_push_one ((word) thread_table[i].context.IntT10);
- GC_push_one ((word) thread_table[i].context.IntT11);
- GC_push_one ((word) thread_table[i].context.IntT12);
- GC_push_one ((word) thread_table[i].context.IntAt);
- GC_push_all_stack((char *) thread_table[i].context.IntSp,
- thread_table[i].stack);
-# else
- --> architecture not supported
-# endif /* !ALPHA */
-# endif /* !PPC */
-# endif /* !MIPS */
-# endif /* !SHx */
-# endif /* !ARM32 */
-# endif /* !I386 */