aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2020-07-17 01:19:07 -0300
committerGitHub <noreply@github.com>2020-07-17 14:19:07 +1000
commit9f6b24edfddf871320290463437b3f3cb7e29006 (patch)
tree4b8b45db5fe931ac37f843778c58a2d676fe3fba /Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs
parent46f8cef6a9e4a305803f1356446e25ce54909130 (diff)
Improve kernel IPC related syscalls (#1379)
* Implement session count decrement when the handle is closed * Remove unused field * Implement SendSyncRequestWithUserBuffer, SendAsyncRequestWithUserBuffer and ReplyAndReceiveWithUserBuffer syscalls * Nits * Fix swapped copy dst/src * Add missing pointer buffer descriptor write on reply * Fix IPC unaligned buffer copy and restoring client attributes on reply * Oops * Fix SetIpcMappingPermission * Fix unaligned copy bugs * Free memory used for temporary IPC buffers
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs114
1 files changed, 58 insertions, 56 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs
index 043a54af..dcfd9347 100644
--- a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/SyscallTable.cs
@@ -24,62 +24,64 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
Dictionary<int, string> svcFuncs64 = new Dictionary<int, string>
{
- { 0x01, nameof(Syscall64.SetHeapSize64) },
- { 0x03, nameof(Syscall64.SetMemoryAttribute64) },
- { 0x04, nameof(Syscall64.MapMemory64) },
- { 0x05, nameof(Syscall64.UnmapMemory64) },
- { 0x06, nameof(Syscall64.QueryMemory64) },
- { 0x07, nameof(Syscall64.ExitProcess64) },
- { 0x08, nameof(Syscall64.CreateThread64) },
- { 0x09, nameof(Syscall64.StartThread64) },
- { 0x0a, nameof(Syscall64.ExitThread64) },
- { 0x0b, nameof(Syscall64.SleepThread64) },
- { 0x0c, nameof(Syscall64.GetThreadPriority64) },
- { 0x0d, nameof(Syscall64.SetThreadPriority64) },
- { 0x0e, nameof(Syscall64.GetThreadCoreMask64) },
- { 0x0f, nameof(Syscall64.SetThreadCoreMask64) },
- { 0x10, nameof(Syscall64.GetCurrentProcessorNumber64) },
- { 0x11, nameof(Syscall64.SignalEvent64) },
- { 0x12, nameof(Syscall64.ClearEvent64) },
- { 0x13, nameof(Syscall64.MapSharedMemory64) },
- { 0x14, nameof(Syscall64.UnmapSharedMemory64) },
- { 0x15, nameof(Syscall64.CreateTransferMemory64) },
- { 0x16, nameof(Syscall64.CloseHandle64) },
- { 0x17, nameof(Syscall64.ResetSignal64) },
- { 0x18, nameof(Syscall64.WaitSynchronization64) },
- { 0x19, nameof(Syscall64.CancelSynchronization64) },
- { 0x1a, nameof(Syscall64.ArbitrateLock64) },
- { 0x1b, nameof(Syscall64.ArbitrateUnlock64) },
- { 0x1c, nameof(Syscall64.WaitProcessWideKeyAtomic64) },
- { 0x1d, nameof(Syscall64.SignalProcessWideKey64) },
- { 0x1e, nameof(Syscall64.GetSystemTick64) },
- { 0x1f, nameof(Syscall64.ConnectToNamedPort64) },
- { 0x21, nameof(Syscall64.SendSyncRequest64) },
- { 0x22, nameof(Syscall64.SendSyncRequestWithUserBuffer64) },
- { 0x24, nameof(Syscall64.GetProcessId64) },
- { 0x25, nameof(Syscall64.GetThreadId64) },
- { 0x26, nameof(Syscall64.Break64) },
- { 0x27, nameof(Syscall64.OutputDebugString64) },
- { 0x29, nameof(Syscall64.GetInfo64) },
- { 0x2c, nameof(Syscall64.MapPhysicalMemory64) },
- { 0x2d, nameof(Syscall64.UnmapPhysicalMemory64) },
- { 0x32, nameof(Syscall64.SetThreadActivity64) },
- { 0x33, nameof(Syscall64.GetThreadContext364) },
- { 0x34, nameof(Syscall64.WaitForAddress64) },
- { 0x35, nameof(Syscall64.SignalToAddress64) },
- { 0x40, nameof(Syscall64.CreateSession64) },
- { 0x41, nameof(Syscall64.AcceptSession64) },
- { 0x43, nameof(Syscall64.ReplyAndReceive64) },
- { 0x45, nameof(Syscall64.CreateEvent64) },
- { 0x65, nameof(Syscall64.GetProcessList64) },
- { 0x6f, nameof(Syscall64.GetSystemInfo64) },
- { 0x70, nameof(Syscall64.CreatePort64) },
- { 0x71, nameof(Syscall64.ManageNamedPort64) },
- { 0x72, nameof(Syscall64.ConnectToPort64) },
- { 0x73, nameof(Syscall64.SetProcessMemoryPermission64) },
- { 0x77, nameof(Syscall64.MapProcessCodeMemory64) },
- { 0x78, nameof(Syscall64.UnmapProcessCodeMemory64) },
- { 0x7B, nameof(Syscall64.TerminateProcess64) }
+ { 0x01, nameof(Syscall64.SetHeapSize64) },
+ { 0x03, nameof(Syscall64.SetMemoryAttribute64) },
+ { 0x04, nameof(Syscall64.MapMemory64) },
+ { 0x05, nameof(Syscall64.UnmapMemory64) },
+ { 0x06, nameof(Syscall64.QueryMemory64) },
+ { 0x07, nameof(Syscall64.ExitProcess64) },
+ { 0x08, nameof(Syscall64.CreateThread64) },
+ { 0x09, nameof(Syscall64.StartThread64) },
+ { 0x0a, nameof(Syscall64.ExitThread64) },
+ { 0x0b, nameof(Syscall64.SleepThread64) },
+ { 0x0c, nameof(Syscall64.GetThreadPriority64) },
+ { 0x0d, nameof(Syscall64.SetThreadPriority64) },
+ { 0x0e, nameof(Syscall64.GetThreadCoreMask64) },
+ { 0x0f, nameof(Syscall64.SetThreadCoreMask64) },
+ { 0x10, nameof(Syscall64.GetCurrentProcessorNumber64) },
+ { 0x11, nameof(Syscall64.SignalEvent64) },
+ { 0x12, nameof(Syscall64.ClearEvent64) },
+ { 0x13, nameof(Syscall64.MapSharedMemory64) },
+ { 0x14, nameof(Syscall64.UnmapSharedMemory64) },
+ { 0x15, nameof(Syscall64.CreateTransferMemory64) },
+ { 0x16, nameof(Syscall64.CloseHandle64) },
+ { 0x17, nameof(Syscall64.ResetSignal64) },
+ { 0x18, nameof(Syscall64.WaitSynchronization64) },
+ { 0x19, nameof(Syscall64.CancelSynchronization64) },
+ { 0x1a, nameof(Syscall64.ArbitrateLock64) },
+ { 0x1b, nameof(Syscall64.ArbitrateUnlock64) },
+ { 0x1c, nameof(Syscall64.WaitProcessWideKeyAtomic64) },
+ { 0x1d, nameof(Syscall64.SignalProcessWideKey64) },
+ { 0x1e, nameof(Syscall64.GetSystemTick64) },
+ { 0x1f, nameof(Syscall64.ConnectToNamedPort64) },
+ { 0x21, nameof(Syscall64.SendSyncRequest64) },
+ { 0x22, nameof(Syscall64.SendSyncRequestWithUserBuffer64) },
+ { 0x23, nameof(Syscall64.SendAsyncRequestWithUserBuffer64) },
+ { 0x24, nameof(Syscall64.GetProcessId64) },
+ { 0x25, nameof(Syscall64.GetThreadId64) },
+ { 0x26, nameof(Syscall64.Break64) },
+ { 0x27, nameof(Syscall64.OutputDebugString64) },
+ { 0x29, nameof(Syscall64.GetInfo64) },
+ { 0x2c, nameof(Syscall64.MapPhysicalMemory64) },
+ { 0x2d, nameof(Syscall64.UnmapPhysicalMemory64) },
+ { 0x32, nameof(Syscall64.SetThreadActivity64) },
+ { 0x33, nameof(Syscall64.GetThreadContext364) },
+ { 0x34, nameof(Syscall64.WaitForAddress64) },
+ { 0x35, nameof(Syscall64.SignalToAddress64) },
+ { 0x40, nameof(Syscall64.CreateSession64) },
+ { 0x41, nameof(Syscall64.AcceptSession64) },
+ { 0x43, nameof(Syscall64.ReplyAndReceive64) },
+ { 0x44, nameof(Syscall64.ReplyAndReceiveWithUserBuffer64) },
+ { 0x45, nameof(Syscall64.CreateEvent64) },
+ { 0x65, nameof(Syscall64.GetProcessList64) },
+ { 0x6f, nameof(Syscall64.GetSystemInfo64) },
+ { 0x70, nameof(Syscall64.CreatePort64) },
+ { 0x71, nameof(Syscall64.ManageNamedPort64) },
+ { 0x72, nameof(Syscall64.ConnectToPort64) },
+ { 0x73, nameof(Syscall64.SetProcessMemoryPermission64) },
+ { 0x77, nameof(Syscall64.MapProcessCodeMemory64) },
+ { 0x78, nameof(Syscall64.UnmapProcessCodeMemory64) },
+ { 0x7B, nameof(Syscall64.TerminateProcess64) }
};
foreach (KeyValuePair<int, string> value in svcFuncs64)