mirror of
https://github.com/citra-mirror/citra.git
synced 2024-08-21 10:53:23 +02:00
- removed syscall classes (will just use HLEFunction)
- added hle.cpp and module registration - removed unused code
This commit is contained in:
parent
95f237a086
commit
2a7d7ce55d
@ -152,6 +152,7 @@
|
|||||||
<ClCompile Include="elf\elf_reader.cpp" />
|
<ClCompile Include="elf\elf_reader.cpp" />
|
||||||
<ClCompile Include="file_sys\directory_file_system.cpp" />
|
<ClCompile Include="file_sys\directory_file_system.cpp" />
|
||||||
<ClCompile Include="file_sys\meta_file_system.cpp" />
|
<ClCompile Include="file_sys\meta_file_system.cpp" />
|
||||||
|
<ClCompile Include="hle.cpp" />
|
||||||
<ClCompile Include="hle\hle_syscall.cpp" />
|
<ClCompile Include="hle\hle_syscall.cpp" />
|
||||||
<ClCompile Include="hw\hw.cpp" />
|
<ClCompile Include="hw\hw.cpp" />
|
||||||
<ClCompile Include="hw\hw_lcd.cpp" />
|
<ClCompile Include="hw\hw_lcd.cpp" />
|
||||||
|
@ -81,6 +81,9 @@
|
|||||||
<ClCompile Include="hle\hle_syscall.cpp">
|
<ClCompile Include="hle\hle_syscall.cpp">
|
||||||
<Filter>hle</Filter>
|
<Filter>hle</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="hle.cpp">
|
||||||
|
<Filter>hle</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="arm\disassembler\arm_disasm.h">
|
<ClInclude Include="arm\disassembler\arm_disasm.h">
|
||||||
|
33
src/core/hle.cpp
Normal file
33
src/core/hle.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Copyright 2014 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "core/hle/hle.h"
|
||||||
|
#include "core/hle/hle_syscall.h"
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
namespace HLE {
|
||||||
|
|
||||||
|
static std::vector<HLEModule> 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
|
@ -10,13 +10,11 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
typedef void (*HLEFunc)();
|
typedef void (*HLEFunc)();
|
||||||
typedef void (*SysCallFunc)();
|
|
||||||
|
|
||||||
struct HLEFunction {
|
struct HLEFunction {
|
||||||
u32 id;
|
u32 id;
|
||||||
HLEFunc func;
|
HLEFunc func;
|
||||||
const char* name;
|
const char* name;
|
||||||
u32 flags;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct HLEModule {
|
struct HLEModule {
|
||||||
@ -25,11 +23,15 @@ struct HLEModule {
|
|||||||
const HLEFunction* func_table;
|
const HLEFunction* func_table;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SysCall {
|
|
||||||
u8 id;
|
|
||||||
SysCallFunc func;
|
|
||||||
const char* name;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define PARAM(n) Core::g_app_core->GetReg(n)
|
#define PARAM(n) Core::g_app_core->GetReg(n)
|
||||||
#define RETURN(n) Core::g_app_core->SetReg(0, 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
|
||||||
|
@ -7,16 +7,18 @@
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
typedef u32 Handle;
|
||||||
|
typedef s32 Result;
|
||||||
|
|
||||||
Result SVC_ConnectToPort(void* out, const char* port_name) {
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const SysCall SysCallTable[] = {
|
const HLEFunction SysCallTable[] = {
|
||||||
{0x2D, WrapI_VC<SVC_ConnectToPort>, "svcConnectToPort"},
|
{0x2D, WrapI_VC<SVC_ConnectToPort>, "svcConnectToPort"},
|
||||||
};
|
};
|
||||||
|
|
||||||
void Register_SysCalls() {
|
void Register_SysCall() {
|
||||||
|
HLE::RegisterModule("SysCallTable", ARRAY_SIZE(SysCallTable), SysCallTable);
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,6 @@
|
|||||||
//};
|
//};
|
||||||
|
|
||||||
|
|
||||||
typedef u32 Handle;
|
|
||||||
typedef s32 Result;
|
|
||||||
|
|
||||||
|
|
||||||
Result ConnectToPort(Handle* out, const char* port_name);
|
void Register_SysCall();
|
||||||
|
Loading…
Reference in New Issue
Block a user