diff options
author | bunnei <ericbunnie@gmail.com> | 2014-04-11 05:26:12 +0200 |
---|---|---|
committer | bunnei <ericbunnie@gmail.com> | 2014-04-11 05:26:12 +0200 |
commit | 2bde8f28561ea9436d13d990f6b129a0e80a325e (patch) | |
tree | 4d5404d320f4c737ccc6fcbed3cc5549513689f1 /src/core/hle.cpp | |
parent | updated logging message (diff) | |
download | yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.tar yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.tar.gz yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.tar.bz2 yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.tar.lz yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.tar.xz yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.tar.zst yuzu-2bde8f28561ea9436d13d990f6b129a0e80a325e.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/core/hle.cpp b/src/core/hle.cpp index 8dad7695b..d62d2d0ce 100644 --- a/src/core/hle.cpp +++ b/src/core/hle.cpp @@ -13,21 +13,45 @@ namespace HLE { static std::vector<ModuleDef> 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(); + Register_Syscall(); } void Init() { RegisterAllModules(); + NOTICE_LOG(HLE, "initialized OK"); } void Shutdown() { - g_module_db.clear(); + g_module_db.clear(); + NOTICE_LOG(HLE, "shutdown OK"); } } // namespace |