From fccab79a7aa99613a3593a6fe7a7bffde58b309f Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Sun, 31 May 2015 14:35:56 -0700 Subject: [PATCH] Adding kernel state pointer to PPCContext. Still needs larger cleanup. --- src/xenia/cpu/frontend/ppc_context.h | 6 ++++++ src/xenia/kernel/objects/xthread.cc | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/xenia/cpu/frontend/ppc_context.h b/src/xenia/cpu/frontend/ppc_context.h index 653ec5ba8..8516f70e4 100644 --- a/src/xenia/cpu/frontend/ppc_context.h +++ b/src/xenia/cpu/frontend/ppc_context.h @@ -19,6 +19,9 @@ namespace cpu { class Processor; class ThreadState; } // namespace cpu +namespace kernel { +class KernelState; +} // namespace kernel } // namespace xe namespace xe { @@ -209,6 +212,9 @@ typedef struct alignas(64) PPCContext_s { // current runtime and its data. Processor* processor; + // Shared kernel state, for easy access from kernel exports. + xe::kernel::KernelState* kernel_state; + uint8_t* physical_membase; void SetRegFromString(const char* name, const char* value); diff --git a/src/xenia/kernel/objects/xthread.cc b/src/xenia/kernel/objects/xthread.cc index 3aa0a0548..4f6a58b86 100644 --- a/src/xenia/kernel/objects/xthread.cc +++ b/src/xenia/kernel/objects/xthread.cc @@ -205,6 +205,9 @@ X_STATUS XThread::Create() { thread_state_->thread_id(), thread_state_->stack_limit(), thread_state_->stack_base()); + // Exports use this to get the kernel. + thread_state_->context()->kernel_state = kernel_state_; + uint8_t proc_mask = static_cast(creation_params_.creation_flags >> 24);