From f6c328cf37fe6e0250c20fcbf128f301b3d71d36 Mon Sep 17 00:00:00 2001 From: bunnei Date: Fri, 11 Apr 2014 18:07:49 -0400 Subject: moved hle.cpp into hle folder (due to mistake earlier) --- src/core/hle/hle.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/core/hle/hle.cpp (limited to 'src/core/hle/hle.cpp') diff --git a/src/core/hle/hle.cpp b/src/core/hle/hle.cpp new file mode 100644 index 00000000..d62d2d0c --- /dev/null +++ b/src/core/hle/hle.cpp @@ -0,0 +1,57 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include + +#include "core/hle/hle.h" +#include "core/hle/hle_syscall.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +namespace HLE { + +static std::vector g_module_db; + +const FunctionDef* GetSyscallInfo(u32 opcode) { + u32 func_num = opcode & 0xFFFFFF; // 8 bits + if (func_num > 0xFF) { + ERROR_LOG(HLE,"Unknown syscall: 0x%02X", func_num); + return NULL; + } + return &g_module_db[0].func_table[func_num]; +} + +void CallSyscall(u32 opcode) { + const FunctionDef *info = GetSyscallInfo(opcode); + + if (!info) { + return; + } + if (info->func) { + info->func(); + } else { + ERROR_LOG(HLE, "Unimplemented HLE function %s", info->name); + } +} + +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); +} + +void RegisterAllModules() { + Register_Syscall(); +} + +void Init() { + RegisterAllModules(); + NOTICE_LOG(HLE, "initialized OK"); +} + +void Shutdown() { + g_module_db.clear(); + NOTICE_LOG(HLE, "shutdown OK"); +} + +} // namespace -- cgit v1.2.3