Fix BE endianess arch support in semaphore_406e (#6116)

Add raw() methods for endianness support types and make use of it.
This commit is contained in:
Eladash 2019-06-21 19:29:49 +03:00 committed by Ivan
parent ade291e73d
commit cd0ef99df5
6 changed files with 32 additions and 25 deletions

View file

@ -64,12 +64,10 @@ namespace rsx
rsx->sync_point_request = true;
const u32 addr = get_address(method_registers.semaphore_offset_406e(), method_registers.semaphore_context_dma_406e());
#ifdef IS_LE_MACHINE
arg = se_storage<u32>::swap(arg);
const auto& sema = vm::_ref<le_t<u32>>(addr);
#else
const auto& sema = vm::_ref<u32>(addr);
#endif
// Get raw BE value
arg = be_t<u32>{arg}.raw();
const auto& sema = vm::_ref<nse_t<u32>>(addr);
// TODO: Remove vblank semaphore hack
if (sema == arg || addr == rsx->ctxt_addr + 0x30) return;
@ -244,8 +242,8 @@ namespace rsx
{
case rsx::vertex_base_type::ub:
case rsx::vertex_base_type::ub256:
// One-way byteswap
arg = se_storage<u32>::swap(arg);
// Get BE data
arg = be_t<u32>{arg}.raw();
break;
}