MemoryConfiguration.cs
1 using Ryujinx.HLE.HOS.Kernel.Common; 2 using System; 3 4 namespace Ryujinx.HLE 5 { 6 public enum MemoryConfiguration 7 { 8 MemoryConfiguration4GiB = 0, 9 MemoryConfiguration4GiBAppletDev = 1, 10 MemoryConfiguration4GiBSystemDev = 2, 11 MemoryConfiguration6GiB = 3, 12 MemoryConfiguration6GiBAppletDev = 4, 13 MemoryConfiguration8GiB = 5, 14 } 15 16 static class MemoryConfigurationExtensions 17 { 18 private const ulong GiB = 1024 * 1024 * 1024; 19 20 #pragma warning disable IDE0055 // Disable formatting 21 public static MemoryArrange ToKernelMemoryArrange(this MemoryConfiguration configuration) 22 { 23 return configuration switch 24 { 25 MemoryConfiguration.MemoryConfiguration4GiB => MemoryArrange.MemoryArrange4GiB, 26 MemoryConfiguration.MemoryConfiguration4GiBAppletDev => MemoryArrange.MemoryArrange4GiBAppletDev, 27 MemoryConfiguration.MemoryConfiguration4GiBSystemDev => MemoryArrange.MemoryArrange4GiBSystemDev, 28 MemoryConfiguration.MemoryConfiguration6GiB => MemoryArrange.MemoryArrange6GiB, 29 MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemoryArrange.MemoryArrange6GiBAppletDev, 30 MemoryConfiguration.MemoryConfiguration8GiB => MemoryArrange.MemoryArrange8GiB, 31 _ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."), 32 }; 33 } 34 35 public static MemorySize ToKernelMemorySize(this MemoryConfiguration configuration) 36 { 37 return configuration switch 38 { 39 MemoryConfiguration.MemoryConfiguration4GiB or 40 MemoryConfiguration.MemoryConfiguration4GiBAppletDev or 41 MemoryConfiguration.MemoryConfiguration4GiBSystemDev => MemorySize.MemorySize4GiB, 42 MemoryConfiguration.MemoryConfiguration6GiB or 43 MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemorySize.MemorySize6GiB, 44 MemoryConfiguration.MemoryConfiguration8GiB => MemorySize.MemorySize8GiB, 45 _ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."), 46 }; 47 } 48 49 public static ulong ToDramSize(this MemoryConfiguration configuration) 50 { 51 return configuration switch 52 { 53 MemoryConfiguration.MemoryConfiguration4GiB or 54 MemoryConfiguration.MemoryConfiguration4GiBAppletDev or 55 MemoryConfiguration.MemoryConfiguration4GiBSystemDev => 4 * GiB, 56 MemoryConfiguration.MemoryConfiguration6GiB or 57 MemoryConfiguration.MemoryConfiguration6GiBAppletDev => 6 * GiB, 58 MemoryConfiguration.MemoryConfiguration8GiB => 8 * GiB, 59 _ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."), 60 }; 61 } 62 #pragma warning restore IDE0055 63 } 64 }