PowerPC: Get rid of the 'cr' field which was obsoleted by the new 'cr_fast'

This commit is contained in:
Pierre Bourdon 2014-05-25 22:57:51 +02:00
parent 010ca048df
commit 3a76c0c8f5
2 changed files with 8 additions and 12 deletions

View File

@ -39,21 +39,21 @@ BreakPoints breakpoints;
MemChecks memchecks; MemChecks memchecks;
PPCDebugInterface debug_interface; PPCDebugInterface debug_interface;
void CompactCR() u32 CompactCR()
{ {
u32 new_cr = ppcState.cr_fast[0] << 28; u32 new_cr = ppcState.cr_fast[0] << 28;
for (int i = 1; i < 8; i++) for (int i = 1; i < 8; i++)
{ {
new_cr |= ppcState.cr_fast[i] << (28 - i * 4); new_cr |= ppcState.cr_fast[i] << (28 - i * 4);
} }
ppcState.cr = new_cr; return new_cr;
} }
void ExpandCR() void ExpandCR(u32 cr)
{ {
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
ppcState.cr_fast[i] = (ppcState.cr >> (28 - i * 4)) & 0xF; ppcState.cr_fast[i] = (cr >> (28 - i * 4)) & 0xF;
} }
} }
@ -95,7 +95,6 @@ void ResetRegisters()
ppcState.spr[SPR_ECID_M] = 0x1840c00d; ppcState.spr[SPR_ECID_M] = 0x1840c00d;
ppcState.spr[SPR_ECID_L] = 0x82bb08e8; ppcState.spr[SPR_ECID_L] = 0x82bb08e8;
ppcState.cr = 0;
ppcState.fpscr = 0; ppcState.fpscr = 0;
ppcState.pc = 0; ppcState.pc = 0;
ppcState.npc = 0; ppcState.npc = 0;

View File

@ -39,7 +39,6 @@ struct GC_ALIGNED64(PowerPCState)
u32 pc; // program counter u32 pc; // program counter
u32 npc; u32 npc;
u32 cr; // flags
u8 cr_fast[8]; // Possibly reorder to 0, 2, 4, 8, 1, 3, 5, 7 so that we can make Compact and Expand super fast? u8 cr_fast[8]; // Possibly reorder to 0, 2, 4, 8, 1, 3, 5, 7 so that we can make Compact and Expand super fast?
u32 msr; // machine specific register u32 msr; // machine specific register
@ -101,8 +100,8 @@ void Stop();
CPUState GetState(); CPUState GetState();
volatile CPUState *GetStatePtr(); // this oddity is here instead of an extern declaration to easily be able to find all direct accesses throughout the code. volatile CPUState *GetStatePtr(); // this oddity is here instead of an extern declaration to easily be able to find all direct accesses throughout the code.
void CompactCR(); u32 CompactCR();
void ExpandCR(); void ExpandCR(u32 cr);
void OnIdle(u32 _uThreadAddr); void OnIdle(u32 _uThreadAddr);
void OnIdleIL(); void OnIdleIL();
@ -171,13 +170,11 @@ inline void SetCRBit(int bit, int value) {
// SetCR and GetCR are fairly slow. Should be avoided if possible. // SetCR and GetCR are fairly slow. Should be avoided if possible.
inline void SetCR(u32 new_cr) { inline void SetCR(u32 new_cr) {
PowerPC::ppcState.cr = new_cr; PowerPC::ExpandCR(new_cr);
PowerPC::ExpandCR();
} }
inline u32 GetCR() { inline u32 GetCR() {
PowerPC::CompactCR(); return PowerPC::CompactCR();
return PowerPC::ppcState.cr;
} }
// SetCarry/GetCarry may speed up soon. // SetCarry/GetCarry may speed up soon.