summaryrefslogtreecommitdiffstats
path: root/src/core/hle/svc.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2017-07-21 06:52:50 +0200
committerSubv <subv2112@gmail.com>2017-08-22 16:30:55 +0200
commitbca8916cea9c437d82509f8350fa3b858720f90e (patch)
tree68375d2bac3a42e64e95702d2edaf8e1825af061 /src/core/hle/svc.cpp
parentMerge pull request #2833 from j-selby/single-header-json (diff)
downloadyuzu-bca8916cea9c437d82509f8350fa3b858720f90e.tar
yuzu-bca8916cea9c437d82509f8350fa3b858720f90e.tar.gz
yuzu-bca8916cea9c437d82509f8350fa3b858720f90e.tar.bz2
yuzu-bca8916cea9c437d82509f8350fa3b858720f90e.tar.lz
yuzu-bca8916cea9c437d82509f8350fa3b858720f90e.tar.xz
yuzu-bca8916cea9c437d82509f8350fa3b858720f90e.tar.zst
yuzu-bca8916cea9c437d82509f8350fa3b858720f90e.zip
Diffstat (limited to 'src/core/hle/svc.cpp')
-rw-r--r--src/core/hle/svc.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index e4b803046..b98938cb4 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -31,6 +31,7 @@
#include "core/hle/kernel/timer.h"
#include "core/hle/kernel/vm_manager.h"
#include "core/hle/kernel/wait_object.h"
+#include "core/hle/lock.h"
#include "core/hle/result.h"
#include "core/hle/service/service.h"
@@ -1188,7 +1189,7 @@ struct FunctionDef {
Func* func;
const char* name;
};
-}
+} // namespace
static const FunctionDef SVC_Table[] = {
{0x00, nullptr, "Unknown"},
@@ -1332,6 +1333,9 @@ MICROPROFILE_DEFINE(Kernel_SVC, "Kernel", "SVC", MP_RGB(70, 200, 70));
void CallSVC(u32 immediate) {
MICROPROFILE_SCOPE(Kernel_SVC);
+ // Lock the global kernel mutex when we enter the kernel HLE.
+ std::lock_guard<std::mutex> lock(HLE::g_hle_lock);
+
const FunctionDef* info = GetSVCInfo(immediate);
if (info) {
if (info->func) {
@@ -1342,4 +1346,4 @@ void CallSVC(u32 immediate) {
}
}
-} // namespace
+} // namespace SVC