From 06456c20fc7c9be872e7ce082fa5c0def5fcb0a0 Mon Sep 17 00:00:00 2001 From: Gliniak Date: Fri, 8 Aug 2025 22:05:15 +0200 Subject: [PATCH] [Kernel] Prevent real XAM from initialization while loading dashboard --- src/xenia/kernel/kernel_state.cc | 2 +- src/xenia/kernel/user_module.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/xenia/kernel/kernel_state.cc b/src/xenia/kernel/kernel_state.cc index 861c7cc33..0c3109330 100644 --- a/src/xenia/kernel/kernel_state.cc +++ b/src/xenia/kernel/kernel_state.cc @@ -838,7 +838,7 @@ void KernelState::OnThreadExecute(XThread* thread) { if (user_module->is_dll_module() && user_module->entry_point()) { uint64_t args[] = { user_module->handle(), - user_module->is_attached_ + user_module->is_attached() ? static_cast(2) // DLL_THREAD_ATTACH - Used to call // DLL for each thread created. : static_cast(1), // DLL_PROCESS_ATTACH - Used only diff --git a/src/xenia/kernel/user_module.h b/src/xenia/kernel/user_module.h index 49c812233..412ed9708 100644 --- a/src/xenia/kernel/user_module.h +++ b/src/xenia/kernel/user_module.h @@ -66,6 +66,13 @@ class UserModule : public XModule { bool is_executable() const { return processor_module_->is_executable(); } bool is_dll_module() const { return is_dll_module_; } + bool is_attached() const { + // Special case for skipping real XAM initialization as it will fail. + if (name_ == "xam") { + return true; + } + return is_attached_; + } uint32_t entry_point() const { return entry_point_; } uint32_t stack_size() const { return stack_size_; }