From 2a7d7ce55d51a1cf893d14e893b87941df4a2f03 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 10 Apr 2014 21:30:00 -0400 Subject: [PATCH] - removed syscall classes (will just use HLEFunction) - added hle.cpp and module registration - removed unused code --- src/core/core.vcxproj | 1 + src/core/core.vcxproj.filters | 3 +++ src/core/hle.cpp | 33 +++++++++++++++++++++++++++++++++ src/core/hle/hle.h | 18 ++++++++++-------- src/core/hle/hle_syscall.cpp | 10 ++++++---- src/core/hle/hle_syscall.h | 4 +--- 6 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 src/core/hle.cpp diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj index 55ce508a6..8097a47d3 100644 --- a/src/core/core.vcxproj +++ b/src/core/core.vcxproj @@ -152,6 +152,7 @@ + diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters index 7bac04a2d..79bddf09a 100644 --- a/src/core/core.vcxproj.filters +++ b/src/core/core.vcxproj.filters @@ -81,6 +81,9 @@ hle + + hle + diff --git a/src/core/hle.cpp b/src/core/hle.cpp new file mode 100644 index 000000000..f0c7d2178 --- /dev/null +++ b/src/core/hle.cpp @@ -0,0 +1,33 @@ +// 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; + +void RegisterModule(const char *name, int num_functions, const HLEFunction *func_table) { + HLEModule module = {name, num_functions, func_table}; + g_module_db.push_back(module); +} + +void RegisterAllModules() { + Register_SysCall(); +} + +void Init() { + RegisterAllModules(); +} + +void Shutdown() { + g_module_db.clear(); +} + +} // namespace diff --git a/src/core/hle/hle.h b/src/core/hle/hle.h index 6780b52c4..6648c787f 100644 --- a/src/core/hle/hle.h +++ b/src/core/hle/hle.h @@ -10,13 +10,11 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// typedef void (*HLEFunc)(); -typedef void (*SysCallFunc)(); struct HLEFunction { u32 id; HLEFunc func; const char* name; - u32 flags; }; struct HLEModule { @@ -25,11 +23,15 @@ struct HLEModule { const HLEFunction* func_table; }; -struct SysCall { - u8 id; - SysCallFunc func; - const char* name; -}; - #define PARAM(n) Core::g_app_core->GetReg(n) #define RETURN(n) Core::g_app_core->SetReg(0, n) + +namespace HLE { + +void Init(); + +void Shutdown(); + +void RegisterModule(const char *name, int num_functions, const HLEFunction *func_table); + +} // namespace diff --git a/src/core/hle/hle_syscall.cpp b/src/core/hle/hle_syscall.cpp index c8a516848..b17a2e220 100644 --- a/src/core/hle/hle_syscall.cpp +++ b/src/core/hle/hle_syscall.cpp @@ -7,16 +7,18 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// - +typedef u32 Handle; +typedef s32 Result; Result SVC_ConnectToPort(void* out, const char* port_name) { - NOTICE_LOG(OSHLE, "SVC_ConnectToPort called, port_name: %s", port_name); + NOTICE_LOG(OSHLE, "svcConnectToPort called, port_name: %s", port_name); return 0; } -const SysCall SysCallTable[] = { +const HLEFunction SysCallTable[] = { {0x2D, WrapI_VC, "svcConnectToPort"}, }; -void Register_SysCalls() { +void Register_SysCall() { + HLE::RegisterModule("SysCallTable", ARRAY_SIZE(SysCallTable), SysCallTable); } diff --git a/src/core/hle/hle_syscall.h b/src/core/hle/hle_syscall.h index 506dcfc78..643af0bf4 100644 --- a/src/core/hle/hle_syscall.h +++ b/src/core/hle/hle_syscall.h @@ -35,8 +35,6 @@ //}; -typedef u32 Handle; -typedef s32 Result; -Result ConnectToPort(Handle* out, const char* port_name); +void Register_SysCall();