add MSR to RegisterView and throw in some missing break;s (thanks lpfaint :p)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4432 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Shawn Hoffman 2009-10-17 07:17:49 +00:00
parent c741ddd082
commit 1bf3c00683
2 changed files with 24 additions and 19 deletions

View File

@ -26,7 +26,7 @@ extern const char* GetGPRName(unsigned int index);
extern const char* GetFPRName(unsigned int index);
static const char *special_reg_names[] = {
"PC", "LR", "CTR", "CR", "FPSCR", "SRR0", "SRR1", "Exceptions", "Int Mask", "Int Cause",
"PC", "LR", "CTR", "CR", "FPSCR", "MSR", "SRR0", "SRR1", "Exceptions", "Int Mask", "Int Cause",
};
static u32 GetSpecialRegValue(int reg) {
@ -36,11 +36,12 @@ static u32 GetSpecialRegValue(int reg) {
case 2: return PowerPC::ppcState.spr[SPR_CTR];
case 3: return GetCR();
case 4: return PowerPC::ppcState.fpscr;
case 5: return PowerPC::ppcState.spr[SPR_SRR0];
case 6: return PowerPC::ppcState.spr[SPR_SRR1];
case 7: return PowerPC::ppcState.Exceptions;
case 8: return ProcessorInterface::GetMask();
case 9: return ProcessorInterface::GetCause();
case 5: return PowerPC::ppcState.msr;
case 6: return PowerPC::ppcState.spr[SPR_SRR0];
case 7: return PowerPC::ppcState.spr[SPR_SRR1];
case 8: return PowerPC::ppcState.Exceptions;
case 9: return ProcessorInterface::GetMask();
case 10: return ProcessorInterface::GetCause();
default: return 0;
}
}
@ -70,17 +71,18 @@ wxString CRegTable::GetValue(int row, int col)
static void SetSpecialRegValue(int reg, u32 value) {
switch (reg) {
case 0: PowerPC::ppcState.pc = value;
case 1: PowerPC::ppcState.spr[SPR_LR] = value;
case 2: PowerPC::ppcState.spr[SPR_CTR] = value;
case 3: SetCR(value);
case 4: PowerPC::ppcState.fpscr = value;
case 5: PowerPC::ppcState.spr[SPR_SRR0] = value;
case 6: PowerPC::ppcState.spr[SPR_SRR1] = value;
case 7: PowerPC::ppcState.Exceptions = value;
case 0: PowerPC::ppcState.pc = value; break;
case 1: PowerPC::ppcState.spr[SPR_LR] = value; break;
case 2: PowerPC::ppcState.spr[SPR_CTR] = value; break;
case 3: SetCR(value); break;
case 4: PowerPC::ppcState.fpscr = value; break;
case 5: PowerPC::ppcState.msr = value; break;
case 6: PowerPC::ppcState.spr[SPR_SRR0] = value; break;
case 7: PowerPC::ppcState.spr[SPR_SRR1] = value; break;
case 8: PowerPC::ppcState.Exceptions = value; break;
// Should we just change the value, or use ProcessorInterface::SetInterrupt() to make the system aware?
// case 8: return ProcessorInterface::GetMask();
// case 9: return ProcessorInterface::GetCause();
// case 9: return ProcessorInterface::GetMask();
// case 10: return ProcessorInterface::GetCause();
default: return;
}
}
@ -120,7 +122,7 @@ void CRegTable::UpdateCachedRegs()
m_CachedFRegHasChanged[i][1] = (m_CachedFRegs[i][1] != rPS1(i));
m_CachedFRegs[i][1] = rPS1(i);
}
for (int i = 0; i < 6; ++i)
for (int i = 0; i < NUM_SPECIALS; ++i)
{
m_CachedSpecialRegHasChanged[i] = (m_CachedSpecialRegs[i] != GetSpecialRegValue(i));
m_CachedSpecialRegs[i] = GetSpecialRegValue(i);

View File

@ -31,14 +31,17 @@
// CTR
// CR0-7
// FPSCR
// MSR
// SRR0
// SRR1
// Exceptions
// Interrupt Mask (PI)
// Interrupt Cause(PI)
class CRegTable : public wxGridTableBase
{
enum {
NUM_SPECIALS = 10,
NUM_SPECIALS = 11,
};
public: