From b119aa50f5e84758818533279e7d504782beabd8 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Mon, 18 May 2015 21:24:14 -0700 Subject: [PATCH] Fixing thread ID. --- src/xenia/kernel/objects/xthread.cc | 4 ++-- src/xenia/kernel/objects/xthread.h | 2 +- src/xenia/kernel/xboxkrnl_memory.cc | 2 +- src/xenia/kernel/xboxkrnl_rtl.cc | 8 ++++---- src/xenia/memory.cc | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/xenia/kernel/objects/xthread.cc b/src/xenia/kernel/objects/xthread.cc index bdce06129..623787f04 100644 --- a/src/xenia/kernel/objects/xthread.cc +++ b/src/xenia/kernel/objects/xthread.cc @@ -106,8 +106,8 @@ uint32_t XThread::GetCurrentThreadHandle() { return thread->handle(); } -uint32_t XThread::GetCurrentThreadId(const uint8_t* thread_state_block) { - return xe::load_and_swap(thread_state_block + 0x14C); +uint32_t XThread::GetCurrentThreadId(const uint8_t* pcr) { + return xe::load_and_swap(pcr + 0x2D8 + 0x14C); } uint32_t XThread::last_error() { diff --git a/src/xenia/kernel/objects/xthread.h b/src/xenia/kernel/objects/xthread.h index 5cdb11604..481ecb26f 100644 --- a/src/xenia/kernel/objects/xthread.h +++ b/src/xenia/kernel/objects/xthread.h @@ -33,7 +33,7 @@ class XThread : public XObject { static XThread* GetCurrentThread(); static uint32_t GetCurrentThreadHandle(); - static uint32_t GetCurrentThreadId(const uint8_t* thread_state_block); + static uint32_t GetCurrentThreadId(const uint8_t* pcr); uint32_t pcr_ptr() const { return pcr_address_; } uint32_t thread_state_ptr() const { return thread_state_address_; } diff --git a/src/xenia/kernel/xboxkrnl_memory.cc b/src/xenia/kernel/xboxkrnl_memory.cc index 639d8d3a4..89ff0f9db 100644 --- a/src/xenia/kernel/xboxkrnl_memory.cc +++ b/src/xenia/kernel/xboxkrnl_memory.cc @@ -149,7 +149,7 @@ SHIM_CALL NtAllocateVirtualMemory_shim(PPCContext* ppc_state, // Zero memory, if needed. if (address && !(alloc_type & X_MEM_NOZERO)) { if (alloc_type & X_MEM_COMMIT) { - std::memset(SHIM_MEM_ADDR(address), 0, adjusted_size); + state->memory()->Zero(address, adjusted_size); } } diff --git a/src/xenia/kernel/xboxkrnl_rtl.cc b/src/xenia/kernel/xboxkrnl_rtl.cc index a10c51e11..30310634c 100644 --- a/src/xenia/kernel/xboxkrnl_rtl.cc +++ b/src/xenia/kernel/xboxkrnl_rtl.cc @@ -522,8 +522,8 @@ SHIM_CALL RtlEnterCriticalSection_shim(PPCContext* ppc_state, // XELOGD("RtlEnterCriticalSection(%.8X)", cs_ptr); - const uint8_t* thread_state_block = SHIM_MEM_ADDR(ppc_state->r[13]); - uint32_t thread_id = XThread::GetCurrentThreadId(thread_state_block); + const uint8_t* pcr = SHIM_MEM_ADDR(ppc_state->r[13]); + uint32_t thread_id = XThread::GetCurrentThreadId(pcr); auto cs = (X_RTL_CRITICAL_SECTION*)SHIM_MEM_ADDR(cs_ptr); @@ -564,8 +564,8 @@ SHIM_CALL RtlTryEnterCriticalSection_shim(PPCContext* ppc_state, // XELOGD("RtlTryEnterCriticalSection(%.8X)", cs_ptr); - const uint8_t* thread_state_block = SHIM_MEM_ADDR(ppc_state->r[13]); - uint32_t thread_id = XThread::GetCurrentThreadId(thread_state_block); + const uint8_t* pcr = SHIM_MEM_ADDR(ppc_state->r[13]); + uint32_t thread_id = XThread::GetCurrentThreadId(pcr); auto cs = (X_RTL_CRITICAL_SECTION*)SHIM_MEM_ADDR(cs_ptr); diff --git a/src/xenia/memory.cc b/src/xenia/memory.cc index ceb4cab2d..45fd00ac4 100644 --- a/src/xenia/memory.cc +++ b/src/xenia/memory.cc @@ -731,7 +731,7 @@ bool BaseHeap::AllocRange(uint32_t low_address, uint32_t high_address, } if (FLAGS_scribble_heap && protect & kMemoryProtectWrite) { - memset(result, 0xCD, page_count * page_size_); + std::memset(result, 0xCD, page_count * page_size_); } }