citra-emu
/
citra
Archived
1
0
Fork 0

- added SVC stubs for QueryMemory and GetThreadId

- added SVC structs MemoryInfo and PageInfo
This commit is contained in:
bunnei 2014-05-15 20:17:30 -04:00
parent 4910b6f336
commit 4fba4f36bf
3 changed files with 30 additions and 2 deletions

View File

@ -734,6 +734,11 @@ template<int func(void*, u32)> void WrapI_VU(){
RETURN(retval); RETURN(retval);
} }
template<int func(void*, void*, u32)> void WrapI_VVU(){
u32 retval = func(Memory::GetPointer(PARAM(0)), Memory::GetPointer(PARAM(1)), PARAM(2));
RETURN(retval);
}
template<int func(void*, u32, void*, int)> void WrapI_VUVI(){ template<int func(void*, u32, void*, int)> void WrapI_VUVI(){
u32 retval = func(Memory::GetPointer(PARAM(0)), PARAM(1), Memory::GetPointer(PARAM(2)), PARAM(3)); u32 retval = func(Memory::GetPointer(PARAM(0)), PARAM(1), Memory::GetPointer(PARAM(2)), PARAM(3));
RETURN(retval); RETURN(retval);

View File

@ -169,10 +169,22 @@ Result ReleaseMutex(Handle handle) {
return 0; return 0;
} }
Result GetThreadId(void* thread_id, u32 thread) {
DEBUG_LOG(SVC, "(UNIMPLEMENTED) GetThreadId called thread=0x%08X", thread);
return 0;
}
Result QueryMemory(void *_info, void *_out, u32 addr) {
MemoryInfo* info = (MemoryInfo*) _info;
PageInfo* out = (PageInfo*) _out;
DEBUG_LOG(SVC, "(UNIMPLEMENTED) QueryMemory called addr=0x%08X", addr);
return 0;
}
const HLE::FunctionDef Syscall_Table[] = { const HLE::FunctionDef Syscall_Table[] = {
{0x00, NULL, "Unknown"}, {0x00, NULL, "Unknown"},
{0x01, WrapI_VUUUUU<ControlMemory>, "ControlMemory"}, {0x01, WrapI_VUUUUU<ControlMemory>, "ControlMemory"},
{0x02, NULL, "QueryMemory"}, {0x02, WrapI_VVU<QueryMemory>, "QueryMemory"},
{0x03, NULL, "ExitProcess"}, {0x03, NULL, "ExitProcess"},
{0x04, NULL, "GetProcessAffinityMask"}, {0x04, NULL, "GetProcessAffinityMask"},
{0x05, NULL, "SetProcessAffinityMask"}, {0x05, NULL, "SetProcessAffinityMask"},
@ -225,7 +237,7 @@ const HLE::FunctionDef Syscall_Table[] = {
{0x34, NULL, "OpenThread"}, {0x34, NULL, "OpenThread"},
{0x35, NULL, "GetProcessId"}, {0x35, NULL, "GetProcessId"},
{0x36, NULL, "GetProcessIdOfThread"}, {0x36, NULL, "GetProcessIdOfThread"},
{0x37, NULL, "GetThreadId"}, {0x37, WrapI_VU<GetThreadId>, "GetThreadId"},
{0x38, WrapI_VU<GetResourceLimit>, "GetResourceLimit"}, {0x38, WrapI_VU<GetResourceLimit>, "GetResourceLimit"},
{0x39, NULL, "GetResourceLimitLimitValues"}, {0x39, NULL, "GetResourceLimitLimitValues"},
{0x3A, WrapI_VUVI<GetResourceLimitCurrentValues>, "GetResourceLimitCurrentValues"}, {0x3A, WrapI_VUVI<GetResourceLimitCurrentValues>, "GetResourceLimitCurrentValues"},

View File

@ -9,6 +9,17 @@
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
// SVC structures // SVC structures
struct MemoryInfo {
u32 base_address;
u32 size;
u32 permission;
u32 state;
};
struct PageInfo {
u32 flags;
};
struct ThreadContext { struct ThreadContext {
u32 cpu_registers[13]; u32 cpu_registers[13];
u32 sp; u32 sp;