Skip to content

Commit e361301

Browse files
committed
CPU/Recompiler: Fix incorrect shift in LUT fastmem
1 parent c727ac3 commit e361301

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

src/core/cpu_newrec_compiler_aarch64.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,7 +1342,7 @@ vixl::aarch64::WRegister CPU::NewRec::AArch64Compiler::GenerateLoad(const vixl::
13421342
if (g_settings.cpu_fastmem_mode == CPUFastmemMode::LUT)
13431343
{
13441344
DebugAssert(addr_reg.GetCode() != RWARG3.GetCode());
1345-
armAsm->lsr(RWARG3, addr_reg, Bus::FASTMEM_LUT_PAGE_SHIFT);
1345+
armAsm->lsr(RXARG3, addr_reg, Bus::FASTMEM_LUT_PAGE_SHIFT);
13461346
armAsm->ldr(RXARG3, MemOperand(RMEMBASE, RXARG3, LSL, 8));
13471347
}
13481348

@@ -1452,7 +1452,7 @@ void CPU::NewRec::AArch64Compiler::GenerateStore(const vixl::aarch64::WRegister&
14521452
if (g_settings.cpu_fastmem_mode == CPUFastmemMode::LUT)
14531453
{
14541454
DebugAssert(addr_reg.GetCode() != RWARG3.GetCode());
1455-
armAsm->lsr(RWARG3, addr_reg, Bus::FASTMEM_LUT_PAGE_SHIFT);
1455+
armAsm->lsr(RXARG3, addr_reg, Bus::FASTMEM_LUT_PAGE_SHIFT);
14561456
armAsm->ldr(RXARG3, MemOperand(RMEMBASE, RXARG3, LSL, 8));
14571457
}
14581458

src/core/cpu_newrec_compiler_x64.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,7 +1252,7 @@ Xbyak::Reg32 CPU::NewRec::X64Compiler::GenerateLoad(const Xbyak::Reg32& addr_reg
12521252
{
12531253
DebugAssert(addr_reg != RWARG3);
12541254
cg->mov(RWARG3, addr_reg.cvt32());
1255-
cg->shr(RWARG3, Bus::FASTMEM_LUT_PAGE_SHIFT);
1255+
cg->shr(RXARG3, Bus::FASTMEM_LUT_PAGE_SHIFT);
12561256
cg->mov(RXARG3, cg->qword[RMEMBASE + RXARG3 * 8]);
12571257
}
12581258

@@ -1379,7 +1379,7 @@ void CPU::NewRec::X64Compiler::GenerateStore(const Xbyak::Reg32& addr_reg, const
13791379
{
13801380
DebugAssert(addr_reg != RWARG3 && value_reg != RWARG3);
13811381
cg->mov(RWARG3, addr_reg.cvt32());
1382-
cg->shr(RWARG3, Bus::FASTMEM_LUT_PAGE_SHIFT);
1382+
cg->shr(RXARG3, Bus::FASTMEM_LUT_PAGE_SHIFT);
13831383
cg->mov(RXARG3, cg->qword[RMEMBASE + RXARG3 * 8]);
13841384
}
13851385

src/core/cpu_recompiler_code_generator_aarch64.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1736,7 +1736,7 @@ void CodeGenerator::EmitLoadGuestRAMFastmem(const Value& address, RegSize size,
17361736

17371737
if (g_settings.cpu_fastmem_mode == CPUFastmemMode::LUT)
17381738
{
1739-
m_emit->lsr(GetHostReg32(RARG1), GetHostReg32(address_reg), Bus::FASTMEM_LUT_PAGE_SHIFT);
1739+
m_emit->lsr(GetHostReg64(RARG1), GetHostReg32(address_reg), Bus::FASTMEM_LUT_PAGE_SHIFT);
17401740
m_emit->ldr(GetHostReg64(RARG1), a64::MemOperand(GetFastmemBasePtrReg(), GetHostReg64(RARG1), a64::LSL, 3));
17411741
}
17421742

@@ -1779,7 +1779,7 @@ void CodeGenerator::EmitLoadGuestMemoryFastmem(Instruction instruction, const Co
17791779

17801780
if (g_settings.cpu_fastmem_mode == CPUFastmemMode::LUT)
17811781
{
1782-
m_emit->lsr(GetHostReg32(RARG1), GetHostReg32(address_reg), Bus::FASTMEM_LUT_PAGE_SHIFT);
1782+
m_emit->lsr(GetHostReg64(RARG1), GetHostReg32(address_reg), Bus::FASTMEM_LUT_PAGE_SHIFT);
17831783
m_emit->ldr(GetHostReg64(RARG1), a64::MemOperand(GetFastmemBasePtrReg(), GetHostReg64(RARG1), a64::LSL, 3));
17841784
}
17851785

@@ -1927,7 +1927,7 @@ void CodeGenerator::EmitStoreGuestMemoryFastmem(Instruction instruction, const C
19271927

19281928
if (g_settings.cpu_fastmem_mode == CPUFastmemMode::LUT)
19291929
{
1930-
m_emit->lsr(GetHostReg32(RARG1), GetHostReg32(address_reg), Bus::FASTMEM_LUT_PAGE_SHIFT);
1930+
m_emit->lsr(GetHostReg64(RARG1), GetHostReg32(address_reg), Bus::FASTMEM_LUT_PAGE_SHIFT);
19311931
m_emit->ldr(GetHostReg64(RARG1), a64::MemOperand(GetFastmemBasePtrReg(), GetHostReg64(RARG1), a64::LSL, 3));
19321932
}
19331933

0 commit comments

Comments
 (0)