JitArm64: Do not use offsetof on non-standard-layout types
Applying PR #8687 to Arm64 JIT.
This commit is contained in:
parent
f06e9c55c8
commit
8ae0bf93e7
|
@ -105,18 +105,18 @@ void JitArm64::GenerateAsm()
|
||||||
// b.effectiveAddress != addr || b.msrBits != msr
|
// b.effectiveAddress != addr || b.msrBits != msr
|
||||||
ARM64Reg pc_and_msr = W25;
|
ARM64Reg pc_and_msr = W25;
|
||||||
ARM64Reg pc_and_msr2 = W24;
|
ARM64Reg pc_and_msr2 = W24;
|
||||||
LDR(INDEX_UNSIGNED, pc_and_msr, block, offsetof(JitBlock, effectiveAddress));
|
LDR(INDEX_UNSIGNED, pc_and_msr, block, offsetof(JitBlockData, effectiveAddress));
|
||||||
CMP(pc_and_msr, DISPATCHER_PC);
|
CMP(pc_and_msr, DISPATCHER_PC);
|
||||||
FixupBranch pc_missmatch = B(CC_NEQ);
|
FixupBranch pc_missmatch = B(CC_NEQ);
|
||||||
|
|
||||||
LDR(INDEX_UNSIGNED, pc_and_msr2, PPC_REG, PPCSTATE_OFF(msr));
|
LDR(INDEX_UNSIGNED, pc_and_msr2, PPC_REG, PPCSTATE_OFF(msr));
|
||||||
ANDI2R(pc_and_msr2, pc_and_msr2, JitBaseBlockCache::JIT_CACHE_MSR_MASK);
|
ANDI2R(pc_and_msr2, pc_and_msr2, JitBaseBlockCache::JIT_CACHE_MSR_MASK);
|
||||||
LDR(INDEX_UNSIGNED, pc_and_msr, block, offsetof(JitBlock, msrBits));
|
LDR(INDEX_UNSIGNED, pc_and_msr, block, offsetof(JitBlockData, msrBits));
|
||||||
CMP(pc_and_msr, pc_and_msr2);
|
CMP(pc_and_msr, pc_and_msr2);
|
||||||
FixupBranch msr_missmatch = B(CC_NEQ);
|
FixupBranch msr_missmatch = B(CC_NEQ);
|
||||||
|
|
||||||
// return blocks[block_num].normalEntry;
|
// return blocks[block_num].normalEntry;
|
||||||
LDR(INDEX_UNSIGNED, block, block, offsetof(JitBlock, normalEntry));
|
LDR(INDEX_UNSIGNED, block, block, offsetof(JitBlockData, normalEntry));
|
||||||
BR(block);
|
BR(block);
|
||||||
SetJumpTarget(not_found);
|
SetJumpTarget(not_found);
|
||||||
SetJumpTarget(pc_missmatch);
|
SetJumpTarget(pc_missmatch);
|
||||||
|
|
Loading…
Reference in New Issue