static void dc_callvm_argLongLong_ppc32_sysv(DCCallVM* in_self, DClonglong L) { DCint* p = (DCint*) &L; DCCallVM_ppc32* self = (DCCallVM_ppc32*)in_self; /* fillup integer register file */ if (self->mIntRegs < 7) { /* next free integer register is even (r0, r2, r3) ? */ /* if not, skip one integer */ if (self->mIntRegs & 1) self->mIntRegs++; self->mRegData.mIntData[self->mIntRegs++] = p[0]; self->mRegData.mIntData[self->mIntRegs++] = p[1]; } /* OR push onto stack */ else { /* in case, mIntRegs == 7, set it to 8 */ self->mIntRegs = 8; /* align stack to 8 byte boundary */ dcVecResize(&self->mVecHead , ( dcVecSize(&self->mVecHead) + 7 ) & (-8UL) ); /* push data */ dcVecAppend(&self->mVecHead,&L,sizeof(DClonglong)); } }
static void reset(DCCallVM* in_p) { DCCallVM_arm32_armhf* p = (DCCallVM_arm32_armhf*)in_p; p->i = 0; p->s = 0; p->d = 0; dcVecResize(&p->mVecHead, 16); }
/* Reset argument buffer. */ static void dc_callvm_reset_sparc64(DCCallVM* in_self) { DCCallVM_sparc64* self = (DCCallVM_sparc64*)in_self; dcVecResize(&self->mVecHead,DHEAD); self->mIntRegs = 0; self->mFloatRegs = 0; self->mUseSingleFlags = 0; }
static void dc_callvm_argDouble_ppc32_sysv(DCCallVM* in_self, DCdouble d) { DCCallVM_ppc32* self = (DCCallVM_ppc32*)in_self; if (self->mFloatRegs < 8) self->mRegData.mFloatData[self->mFloatRegs++] = d; else /* OR push data on stack */ { /* align stack to 8 byte boundary */ dcVecResize(&self->mVecHead , ( dcVecSize(&self->mVecHead) + 7UL ) & -8UL ); /* AND push data */ dcVecAppend(&self->mVecHead,(DCpointer) &d,sizeof(DCdouble)); } }
static void dc_callvm_reset_x86_win32_fast(DCCallVM* in_self) { DCCallVM_x86* self = (DCCallVM_x86*) in_self; dcVecResize(&self->mVecHead, sizeof(DCint) * 2 ); self->mIntRegs = 0; }
/* Reset argument buffer. */ static void dc_callvm_reset_v9(DCCallVM* in_self) { DCCallVM_v9* self = (DCCallVM_v9*)in_self; dcVecResize(&self->mVecHead,0); }