fix LDM usermode for aarch64 as well
This commit is contained in:
parent
3173e6e25d
commit
2725429727
|
@ -357,7 +357,8 @@ const Compiler::CompileFunc A_Comp[ARMInstrInfo::ak_Count] =
|
||||||
// Branch
|
// Branch
|
||||||
F(BranchImm), F(BranchImm), F(BranchImm), F(BranchXchangeReg), F(BranchXchangeReg),
|
F(BranchImm), F(BranchImm), F(BranchImm), F(BranchXchangeReg), F(BranchXchangeReg),
|
||||||
// Special
|
// Special
|
||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
|
F(Nop)
|
||||||
};
|
};
|
||||||
#undef F
|
#undef F
|
||||||
#define F(x) &Compiler::T_Comp_##x
|
#define F(x) &Compiler::T_Comp_##x
|
||||||
|
|
|
@ -103,6 +103,8 @@ public:
|
||||||
void LoadCPSR();
|
void LoadCPSR();
|
||||||
void SaveCPSR(bool markClean = true);
|
void SaveCPSR(bool markClean = true);
|
||||||
|
|
||||||
|
void Nop() {}
|
||||||
|
|
||||||
void A_Comp_ALUTriOp();
|
void A_Comp_ALUTriOp();
|
||||||
void A_Comp_ALUMovOp();
|
void A_Comp_ALUMovOp();
|
||||||
void A_Comp_ALUCmpOp();
|
void A_Comp_ALUCmpOp();
|
||||||
|
|
|
@ -639,7 +639,7 @@ s32 Compiler::Comp_MemAccessBlock(int rn, BitSet16 regs, bool store, bool preinc
|
||||||
|
|
||||||
int reg = *it;
|
int reg = *it;
|
||||||
|
|
||||||
if (usermode && reg >= 8 && reg < 15)
|
if (usermode && !regs[15] && reg >= 8 && reg < 15)
|
||||||
{
|
{
|
||||||
if (RegCache.Mapping[reg] != INVALID_REG)
|
if (RegCache.Mapping[reg] != INVALID_REG)
|
||||||
MOV(W3, MapReg(reg));
|
MOV(W3, MapReg(reg));
|
||||||
|
|
Loading…
Reference in New Issue