diff options
Diffstat (limited to 'src/core/hle/hle.cpp')
-rw-r--r-- | src/core/hle/hle.cpp | 55 |
1 files changed, 8 insertions, 47 deletions
diff --git a/src/core/hle/hle.cpp b/src/core/hle/hle.cpp index 1aaeaa9c..fdeb9a02 100644 --- a/src/core/hle/hle.cpp +++ b/src/core/hle/hle.cpp @@ -2,12 +2,11 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. -#include <vector> - -#include "common/profiler.h" +#include "common/assert.h" +#include "common/logging/log.h" #include "core/arm/arm_interface.h" -#include "core/mem_map.h" +#include "core/core.h" #include "core/hle/hle.h" #include "core/hle/config_mem.h" #include "core/hle/shared_page.h" @@ -18,35 +17,7 @@ namespace HLE { -Common::Profiling::TimingCategory profiler_svc("SVC Calls"); - -static std::vector<ModuleDef> g_module_db; - -bool g_reschedule = false; ///< If true, immediately reschedules the CPU to a new thread - -static const FunctionDef* GetSVCInfo(u32 opcode) { - u32 func_num = opcode & 0xFFFFFF; // 8 bits - if (func_num > 0xFF) { - LOG_ERROR(Kernel_SVC,"unknown svc=0x%02X", func_num); - return nullptr; - } - return &g_module_db[0].func_table[func_num]; -} - -void CallSVC(u32 opcode) { - Common::Profiling::ScopeTimer timer_svc(profiler_svc); - - const FunctionDef *info = GetSVCInfo(opcode); - - if (!info) { - return; - } - if (info->func) { - info->func(); - } else { - LOG_ERROR(Kernel_SVC, "unimplemented SVC function %s(..)", info->name.c_str()); - } -} +bool g_reschedule; ///< If true, immediately reschedules the CPU to a new thread void Reschedule(const char *reason) { DEBUG_ASSERT_MSG(reason != nullptr && strlen(reason) < 256, "Reschedule: Invalid or too long reason."); @@ -62,31 +33,21 @@ void Reschedule(const char *reason) { g_reschedule = true; } -void RegisterModule(std::string name, int num_functions, const FunctionDef* func_table) { - ModuleDef module = {name, num_functions, func_table}; - g_module_db.push_back(module); -} - -static void RegisterAllModules() { - SVC::Register(); -} - void Init() { Service::Init(); - - RegisterAllModules(); - ConfigMem::Init(); SharedPage::Init(); + g_reschedule = false; + LOG_DEBUG(Kernel, "initialized OK"); } void Shutdown() { + ConfigMem::Shutdown(); + SharedPage::Shutdown(); Service::Shutdown(); - g_module_db.clear(); - LOG_DEBUG(Kernel, "shutdown OK"); } |