void PPCXEmitter::Prologue() { // Save regs u32 regSize = 8; // 4 in 32bit system u32 stackFrameSize = 32*32;//(35 - 12) * regSize; // Write Prologue (setup stack frame etc ...) // Save Lr MFLR(R12); for(int i = 14; i < 32; i ++) { STD((PPCReg)i, R1, -((33 - i) * regSize)); } // Save r12 STW(R12, R1, -0x8); // allocate stack STWU(R1, R1, -stackFrameSize); }
void PPCXEmitter::Prologue() { // Save regs u32 regSize = 8; // 4 in 32bit system u32 stackFrameSize = 0x1F0; // Write Prologue (setup stack frame etc ...) // Save Lr MFLR(R12); // Save gpr for(int i = 14; i < 32; i ++) { STD((PPCReg)i, R1, -((33 - i) * regSize)); } // Save r12 STW(R12, R1, -0x8); #if 0 // add fpr frame ADDI(R12, R1, -0x98); // Load fpr for(int i = 14; i < 32; i ++) { SFD((PPCReg)i, R1, -((32 - i) * regSize)); } #endif // allocate stack STWU(R1, R1, -stackFrameSize); #if 1 // load fpr buff MOVI2R(R10, (u32)&_fprTmp); // Save fpr for(int i = 14; i < 32; i ++) { SFD((PPCReg)i, R10, i * regSize); } #endif }