Merge pull request #2106 from magumagu/elf-translation-registers
Correctly set up MSR and BAT registers for ELF loading.
This commit is contained in:
commit
f4e42b394c
|
@ -67,6 +67,25 @@ bool CBoot::Boot_ELF(const std::string& filename)
|
||||||
if(!reader.LoadIntoMemory())
|
if(!reader.LoadIntoMemory())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Set up MSR and the BAT SPR registers.
|
||||||
|
UReg_MSR& m_MSR = ((UReg_MSR&)PowerPC::ppcState.msr);
|
||||||
|
m_MSR.FP = 1;
|
||||||
|
m_MSR.DR = 1;
|
||||||
|
m_MSR.IR = 1;
|
||||||
|
m_MSR.EE = 1;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT0U] = 0x80001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT0L] = 0x00000002;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT4U] = 0x90001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_IBAT4L] = 0x10000002;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT0U] = 0x80001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT0L] = 0x00000002;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT1U] = 0xc0001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT1L] = 0x0000002a;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT4U] = 0x90001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT4L] = 0x10000002;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT5U] = 0xd0001fff;
|
||||||
|
PowerPC::ppcState.spr[SPR_DBAT5L] = 0x1000002a;
|
||||||
|
|
||||||
if (!reader.LoadSymbols())
|
if (!reader.LoadSymbols())
|
||||||
{
|
{
|
||||||
if (LoadMapFromFilename())
|
if (LoadMapFromFilename())
|
||||||
|
|
Loading…
Reference in New Issue