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));
    }
}
Exemple #5
0
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);
}