From 7870423671cba17c8aad9bb93a67c84bda441366 Mon Sep 17 00:00:00 2001 From: TSRBerry <20988865+TSRBerry@users.noreply.github.com> Date: Fri, 17 Mar 2023 12:55:19 +0100 Subject: Update syscall capabilites to include SVCs from FW 15.0.0 (#4530) * Add CapabilityType enum * Add SupervisorCallCount * kernel: Add CapabilityExtensions & Change type of capabilities to uint * Remove private setter from Mask arrays * Pass ReadOnlySpan directly & Remove redundant type casts --- .../HOS/Kernel/Process/CapabilityExtensions.cs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Ryujinx.HLE/HOS/Kernel/Process/CapabilityExtensions.cs (limited to 'Ryujinx.HLE/HOS/Kernel/Process/CapabilityExtensions.cs') diff --git a/Ryujinx.HLE/HOS/Kernel/Process/CapabilityExtensions.cs b/Ryujinx.HLE/HOS/Kernel/Process/CapabilityExtensions.cs new file mode 100644 index 00000000..66d56fe3 --- /dev/null +++ b/Ryujinx.HLE/HOS/Kernel/Process/CapabilityExtensions.cs @@ -0,0 +1,22 @@ +using System.Numerics; + +namespace Ryujinx.HLE.HOS.Kernel.Process +{ + static class CapabilityExtensions + { + public static CapabilityType GetCapabilityType(this uint cap) + { + return (CapabilityType)(((cap + 1) & ~cap) - 1); + } + + public static uint GetFlag(this CapabilityType type) + { + return (uint)type + 1; + } + + public static uint GetId(this CapabilityType type) + { + return (uint)BitOperations.TrailingZeroCount(type.GetFlag()); + } + } +} \ No newline at end of file -- cgit v1.2.3