r15 mrc mrs
This commit is contained in:
parent
e2f3dd1e6f
commit
e5654ec541
|
@ -201,7 +201,12 @@ void A_MRS(ARM* cpu)
|
|||
else
|
||||
psr = cpu->CPSR;
|
||||
|
||||
cpu->R[(cpu->CurInstr>>12) & 0xF] = psr;
|
||||
if (((cpu->CurInstr>>12) & 0xF) == 15)
|
||||
{
|
||||
if (cpu->Num == 1) // doesn't seem to jump on the arm9? checkme
|
||||
cpu->JumpTo(psr & ~0x1); // checkme: this shouldn't be able to switch to thumb?
|
||||
}
|
||||
else cpu->R[(cpu->CurInstr>>12) & 0xF] = psr;
|
||||
|
||||
if (cpu->Num != 1) cpu->AddCycles_CI(1); // arm9
|
||||
else cpu->AddCycles_C(); // arm7
|
||||
|
@ -248,12 +253,13 @@ void A_MRC(ARM* cpu)
|
|||
u32 cn = (cpu->CurInstr >> 16) & 0xF;
|
||||
u32 cm = cpu->CurInstr & 0xF;
|
||||
u32 cpinfo = (cpu->CurInstr >> 5) & 0x7;
|
||||
u32 rd = (cpu->CurInstr>>12) & 0xF;
|
||||
|
||||
if (cpu->Num==0 && cp==15)
|
||||
if (cpu->Num==0 && cp==15 && rd!=15)
|
||||
{
|
||||
cpu->R[(cpu->CurInstr>>12)&0xF] = ((ARMv5*)cpu)->CP15Read((cn<<8)|(cm<<4)|cpinfo);
|
||||
cpu->R[rd] = ((ARMv5*)cpu)->CP15Read((cn<<8)|(cm<<4)|cpinfo);
|
||||
}
|
||||
else if (cpu->Num==1 && cp==14)
|
||||
else if (cpu->Num==1 && cp==14 && rd!=15)
|
||||
{
|
||||
Log(LogLevel::Debug, "MRC p14,%d,%d,%d on ARM7\n", cn, cm, cpinfo);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue