fix LDM usermode for aarch64 as well

This commit is contained in:
RSDuck 2020-02-04 19:07:30 +01:00
parent 3173e6e25d
commit 2725429727
3 changed files with 5 additions and 2 deletions

View File

@ -357,7 +357,8 @@ const Compiler::CompileFunc A_Comp[ARMInstrInfo::ak_Count] =
// Branch
F(BranchImm), F(BranchImm), F(BranchImm), F(BranchXchangeReg), F(BranchXchangeReg),
// Special
NULL, NULL, NULL, NULL, NULL, NULL, NULL
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
F(Nop)
};
#undef F
#define F(x) &Compiler::T_Comp_##x

View File

@ -103,6 +103,8 @@ public:
void LoadCPSR();
void SaveCPSR(bool markClean = true);
void Nop() {}
void A_Comp_ALUTriOp();
void A_Comp_ALUMovOp();
void A_Comp_ALUCmpOp();

View File

@ -639,7 +639,7 @@ s32 Compiler::Comp_MemAccessBlock(int rn, BitSet16 regs, bool store, bool preinc
int reg = *it;
if (usermode && reg >= 8 && reg < 15)
if (usermode && !regs[15] && reg >= 8 && reg < 15)
{
if (RegCache.Mapping[reg] != INVALID_REG)
MOV(W3, MapReg(reg));