summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Lioncash2018-12-12 13:42:21 -0500
committerGravatar Lioncash2018-12-12 15:45:05 -0500
commitb79f08661337f22d46d519218c1cc6c013a14d2c (patch)
treeb4c996d3d1ff9d8cd1b51e1416a7df4dd4f2a7a1
parentsvc: Write out the complete MemoryInfo structure in QueryProcessMemory (diff)
downloadyuzu-b79f08661337f22d46d519218c1cc6c013a14d2c.tar.gz
yuzu-b79f08661337f22d46d519218c1cc6c013a14d2c.tar.xz
yuzu-b79f08661337f22d46d519218c1cc6c013a14d2c.zip
svc: Enable svcQueryProcessMemory
svcQueryProcessMemory is trivial to implement, given all the behavior necessary for it is present, it just needs a handler for it.
-rw-r--r--src/core/hle/kernel/svc.cpp2
-rw-r--r--src/core/hle/kernel/svc_wrap.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 8b51aa2c7..c1100f197 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1912,7 +1912,7 @@ static const FunctionDef SVC_Table[] = {
1912 {0x73, nullptr, "SetProcessMemoryPermission"}, 1912 {0x73, nullptr, "SetProcessMemoryPermission"},
1913 {0x74, nullptr, "MapProcessMemory"}, 1913 {0x74, nullptr, "MapProcessMemory"},
1914 {0x75, nullptr, "UnmapProcessMemory"}, 1914 {0x75, nullptr, "UnmapProcessMemory"},
1915 {0x76, nullptr, "QueryProcessMemory"}, 1915 {0x76, SvcWrap<QueryProcessMemory>, "QueryProcessMemory"},
1916 {0x77, nullptr, "MapProcessCodeMemory"}, 1916 {0x77, nullptr, "MapProcessCodeMemory"},
1917 {0x78, nullptr, "UnmapProcessCodeMemory"}, 1917 {0x78, nullptr, "UnmapProcessCodeMemory"},
1918 {0x79, nullptr, "CreateProcess"}, 1918 {0x79, nullptr, "CreateProcess"},
diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h
index f03b5438b..b762fd93e 100644
--- a/src/core/hle/kernel/svc_wrap.h
+++ b/src/core/hle/kernel/svc_wrap.h
@@ -130,6 +130,11 @@ void SvcWrap() {
130 func(Param(0), Param(1), static_cast<u32>(Param(3)), static_cast<u32>(Param(3))).raw); 130 func(Param(0), Param(1), static_cast<u32>(Param(3)), static_cast<u32>(Param(3))).raw);
131} 131}
132 132
133template <ResultCode func(u64, u64, u32, u64)>
134void SvcWrap() {
135 FuncReturn(func(Param(0), Param(1), static_cast<u32>(Param(2)), Param(3)).raw);
136}
137
133template <ResultCode func(u32, u64, u32)> 138template <ResultCode func(u32, u64, u32)>
134void SvcWrap() { 139void SvcWrap() {
135 FuncReturn(func(static_cast<u32>(Param(0)), Param(1), static_cast<u32>(Param(2))).raw); 140 FuncReturn(func(static_cast<u32>(Param(0)), Param(1), static_cast<u32>(Param(2))).raw);