diff --git a/Utilities/Thread.cpp b/Utilities/Thread.cpp index f70ce02915..2a81974b61 100644 --- a/Utilities/Thread.cpp +++ b/Utilities/Thread.cpp @@ -1295,9 +1295,9 @@ bool handle_access_violation(u32 addr, bool is_writing, x64_context* context) // Now, we notify the game that a page fault occurred so it can rectify it. // Note, for data3, were the memory readable AND we got a page fault, it must be due to a write violation since reads are allowed. - be_t data1 = addr; - be_t data2 = (SYS_MEMORY_PAGE_FAULT_TYPE_PPU_THREAD << 32) + cpu->id; // TODO: fix hack for now that assumes PPU thread always. - be_t data3 = vm::check_addr(addr, a_size, vm::page_readable) ? SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY : SYS_MEMORY_PAGE_FAULT_CAUSE_NON_MAPPED; + u64 data1 = addr; + u64 data2 = ((u64)SYS_MEMORY_PAGE_FAULT_TYPE_PPU_THREAD << 32) + cpu->id; // TODO: fix hack for now that assumes PPU thread always. + u64 data3 = vm::check_addr(addr, a_size, vm::page_readable) ? SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY : SYS_MEMORY_PAGE_FAULT_CAUSE_NON_MAPPED; LOG_ERROR(MEMORY, "Page_fault %s location 0x%x because of %s memory", is_writing ? "writing" : "reading", addr, data3 == SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY ? "writing read-only" : "using unmapped"); diff --git a/rpcs3/Emu/Cell/lv2/sys_mmapper.h b/rpcs3/Emu/Cell/lv2/sys_mmapper.h index 977a9de48b..2ce67b8a3b 100644 --- a/rpcs3/Emu/Cell/lv2/sys_mmapper.h +++ b/rpcs3/Emu/Cell/lv2/sys_mmapper.h @@ -25,13 +25,13 @@ enum : u64 SYS_MEMORY_PAGE_FAULT_EVENT_KEY = 0xfffe000000000000ULL, }; -enum : u32 +enum : u64 { - SYS_MEMORY_PAGE_FAULT_CAUSE_NON_MAPPED = 0x00000002U, - SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY = 0x00000001U, - SYS_MEMORY_PAGE_FAULT_TYPE_PPU_THREAD = 0x00000000U, - SYS_MEMORY_PAGE_FAULT_TYPE_SPU_THREAD = 0x00000001U, - SYS_MEMORY_PAGE_FAULT_TYPE_RAW_SPU = 0x00000002U, + SYS_MEMORY_PAGE_FAULT_CAUSE_NON_MAPPED = 0x2ULL, + SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY = 0x1ULL, + SYS_MEMORY_PAGE_FAULT_TYPE_PPU_THREAD = 0x0ULL, + SYS_MEMORY_PAGE_FAULT_TYPE_SPU_THREAD = 0x1ULL, + SYS_MEMORY_PAGE_FAULT_TYPE_RAW_SPU = 0x2ULL, }; struct page_fault_notification_entry