aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs3
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs27
2 files changed, 29 insertions, 1 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs
index 5d6b1c7d..3cf7ba74 100644
--- a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/InfoType.cs
@@ -28,6 +28,7 @@
UsedNonSystemMemorySize,
IsApplication,
FreeThreadCount,
- ThreadTickCount
+ ThreadTickCount,
+ MesosphereCurrentProcess = 65001
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
index 189e4a3e..c3fb8b8a 100644
--- a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
@@ -2107,6 +2107,33 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
break;
}
+ case InfoType.MesosphereCurrentProcess:
+ {
+ if (handle != 0)
+ {
+ return KernelResult.InvalidHandle;
+ }
+
+ if ((ulong)subId != 0)
+ {
+ return KernelResult.InvalidCombination;
+ }
+
+ KProcess currentProcess = KernelStatic.GetCurrentProcess();
+ KHandleTable handleTable = currentProcess.HandleTable;
+
+ KernelResult result = handleTable.GenerateHandle(currentProcess, out int outHandle);
+
+ if (result != KernelResult.Success)
+ {
+ return result;
+ }
+
+ value = (ulong)outHandle;
+
+ break;
+ }
+
default: return KernelResult.InvalidEnumValue;
}