From 7febbe0f8676d0351071e4e33e6a48027bf0b2e8 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Sun, 26 May 2013 00:43:53 -0700 Subject: [PATCH] Fixing <8b memory accesses. --- src/xenia/cpu/x64/x64_emitter.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/xenia/cpu/x64/x64_emitter.cc b/src/xenia/cpu/x64/x64_emitter.cc index 6e4517748..7a73587af 100644 --- a/src/xenia/cpu/x64/x64_emitter.cc +++ b/src/xenia/cpu/x64/x64_emitter.cc @@ -1555,14 +1555,17 @@ GpVar X64Emitter::ReadMemory( bool needs_swap = false; switch (size) { case 1: - c.mov(value, byte_ptr(real_address)); + c.mov(value.r8(), byte_ptr(real_address)); + c.and_(value, imm(0xFF)); break; case 2: - c.mov(value, word_ptr(real_address)); + c.mov(value.r16(), word_ptr(real_address)); + c.and_(value, imm(0xFFFF)); c.xchg(value.r8Lo(), value.r8Hi()); break; case 4: - c.mov(value, dword_ptr(real_address)); + c.mov(value.r32(), dword_ptr(real_address)); + // No need to and -- the mov to e*x will extend for us. c.bswap(value.r32()); break; case 8: