aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs')
-rw-r--r--src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs
new file mode 100644
index 00000000..103820a6
--- /dev/null
+++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcStaticDescriptor.cs
@@ -0,0 +1,22 @@
+namespace Ryujinx.Horizon.Sdk.Sf.Hipc
+{
+ struct HipcStaticDescriptor
+ {
+ private readonly ulong _data;
+
+ public ulong Address => ((((_data >> 2) & 0x70) | ((_data >> 12) & 0xf)) << 32) | (_data >> 32);
+ public ushort Size => (ushort)(_data >> 16);
+ public int ReceiveIndex => (int)(_data & 0xf);
+
+ public HipcStaticDescriptor(ulong address, ushort size, int receiveIndex)
+ {
+ ulong data = (uint)(receiveIndex & 0xf) | ((uint)size << 16);
+
+ data |= address << 32;
+ data |= (address >> 20) & 0xf000;
+ data |= (address >> 30) & 0xffc0;
+
+ _data = data;
+ }
+ }
+} \ No newline at end of file