any architecture (using miniinterpreter)
-------------------------------------------------------------------------- */
-StgThreadReturnCode StgRun(StgFunPtr f, StgRegTable *basereg STG_UNUSED)
+StgRegTable * StgRun(StgFunPtr f, StgRegTable *basereg STG_UNUSED)
{
while (f) {
- if (RtsFlags[0].DebugFlags.interpreter) {
+ IF_DEBUG(interpreter,
debugBelch("Jumping to ");
printPtr((P_)f); fflush(stdout);
debugBelch("\n");
- }
+ );
f = (StgFunPtr) (f)();
}
- return (StgThreadReturnCode)R1.i;
+ return (StgRegTable *)R1.p;
}
StgFunPtr StgReturn(void)
#define STG_GLOBAL ".global "
#endif
-StgThreadReturnCode
+StgRegTable *
StgRun(StgFunPtr f, StgRegTable *basereg) {
unsigned char space[ RESERVED_C_STACK_BYTES + 4*sizeof(void *) ];
- StgThreadReturnCode r;
+ StgRegTable * r;
__asm__ volatile (
/*
#ifdef x86_64_HOST_ARCH
-extern StgThreadReturnCode StgRun(StgFunPtr f, StgRegTable *basereg);
+extern StgRegTable * StgRun(StgFunPtr f, StgRegTable *basereg);
-static void StgRunIsImplementedInAssembler(void)
+void StgRunIsImplementedInAssembler(void);
+void StgRunIsImplementedInAssembler(void)
{
__asm__ volatile (
/*
/*
* Set BaseReg
*/
- "movq %%rsi,%%rbx\n\t"
+ "movq %%rsi,%%r13\n\t"
/*
* grab the function argument from the stack, and jump to it.
*/
".global " STG_RETURN "\n"
STG_RETURN ":\n\t"
- "movq %%r13, %%rax\n\t" /* Return value in R1 */
+ "movq %%rbx, %%rax\n\t" /* Return value in R1 */
/*
* restore callee-saves registers. (Don't stomp on %%rax!)
#ifdef sparc_HOST_ARCH
-StgThreadReturnCode
+StgRegTable *
StgRun(StgFunPtr f, StgRegTable *basereg) {
unsigned char space[RESERVED_C_STACK_BYTES];
__asm__ volatile ("ld %1,%0"
: "=r" (i7) : "m" (((void **)(space))[100]));
#endif
- return (StgThreadReturnCode)R1.i;
+ return (StgRegTable *)R1.i;
}
#endif
#ifdef alpha_HOST_ARCH
-StgThreadReturnCode
+StgRegTable *
StgRun(StgFunPtr f, StgRegTable *basereg)
{
register long real_ra __asm__("$26"); volatile long save_ra;
register StgFunPtr real_pv __asm__("$27");
- StgThreadReturnCode ret;
+ StgRegTable * ret;
save_ra = real_ra;
save_gp = real_gp;
#ifdef hppa1_1_HOST_ARCH
-StgThreadReturnCode
+StgRegTable *
StgRun(StgFunPtr f, StgRegTable *basereg)
{
StgChar space[RESERVED_C_STACK_BYTES+16*sizeof(long)+10*sizeof(double)];
- StgThreadReturnCode ret;
+ StgRegTable * ret;
__asm__ volatile ("ldo %0(%%r30),%%r19\n"
"\tstw %%r3, 0(0,%%r19)\n"
#ifdef powerpc_HOST_ARCH
-extern StgThreadReturnCode StgRun(StgFunPtr f, StgRegTable *basereg);
+extern StgRegTable * StgRun(StgFunPtr f, StgRegTable *basereg);
#ifdef darwin_HOST_OS
-static void StgRunIsImplementedInAssembler(void)
+void StgRunIsImplementedInAssembler(void)
{
#if HAVE_SUBSECTIONS_VIA_SYMBOLS
// if the toolchain supports deadstripping, we have to
#ifdef powerpc64_HOST_ARCH
#ifdef linux_HOST_OS
-extern StgThreadReturnCode StgRun(StgFunPtr f, StgRegTable *basereg);
+extern StgRegTable * StgRun(StgFunPtr f, StgRegTable *basereg);
static void StgRunIsImplementedInAssembler(void)
{