Remove redundant qualifiers
This commit is contained in:
parent
2a017ee676
commit
2f6e982d4d
12 changed files with 123 additions and 123 deletions
|
@ -24,7 +24,7 @@ namespace ChocolArm64.Instructions
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
context.EmitLdint(InstEmit32Helper.GetRegisterAlias(context.Mode, register));
|
context.EmitLdint(GetRegisterAlias(context.Mode, register));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,22 +30,22 @@ namespace ChocolArm64.Memory
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool Reprotect(IntPtr address, ulong size, Memory.MemoryProtection protection)
|
public static bool Reprotect(IntPtr address, ulong size, MemoryProtection protection)
|
||||||
{
|
{
|
||||||
MmapProts prot = GetProtection(protection);
|
MmapProts prot = GetProtection(protection);
|
||||||
|
|
||||||
return Syscall.mprotect(address, size, prot) == 0;
|
return Syscall.mprotect(address, size, prot) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static MmapProts GetProtection(Memory.MemoryProtection protection)
|
private static MmapProts GetProtection(MemoryProtection protection)
|
||||||
{
|
{
|
||||||
switch (protection)
|
switch (protection)
|
||||||
{
|
{
|
||||||
case Memory.MemoryProtection.None: return MmapProts.PROT_NONE;
|
case MemoryProtection.None: return MmapProts.PROT_NONE;
|
||||||
case Memory.MemoryProtection.Read: return MmapProts.PROT_READ;
|
case MemoryProtection.Read: return MmapProts.PROT_READ;
|
||||||
case Memory.MemoryProtection.ReadAndWrite: return MmapProts.PROT_READ | MmapProts.PROT_WRITE;
|
case MemoryProtection.ReadAndWrite: return MmapProts.PROT_READ | MmapProts.PROT_WRITE;
|
||||||
case Memory.MemoryProtection.ReadAndExecute: return MmapProts.PROT_READ | MmapProts.PROT_EXEC;
|
case MemoryProtection.ReadAndExecute: return MmapProts.PROT_READ | MmapProts.PROT_EXEC;
|
||||||
case Memory.MemoryProtection.Execute: return MmapProts.PROT_EXEC;
|
case MemoryProtection.Execute: return MmapProts.PROT_EXEC;
|
||||||
|
|
||||||
default: throw new ArgumentException($"Invalid permission \"{protection}\".");
|
default: throw new ArgumentException($"Invalid permission \"{protection}\".");
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace ChocolArm64.Translation
|
||||||
|
|
||||||
public TranslatedSub(DynamicMethod method, TranslationTier tier, bool rejit)
|
public TranslatedSub(DynamicMethod method, TranslationTier tier, bool rejit)
|
||||||
{
|
{
|
||||||
Method = method ?? throw new ArgumentNullException(nameof(method));;
|
Method = method ?? throw new ArgumentNullException(nameof(method));
|
||||||
Tier = tier;
|
Tier = tier;
|
||||||
_rejit = rejit;
|
_rejit = rejit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,19 +13,19 @@ namespace Ryujinx.Common.Logging
|
||||||
|
|
||||||
public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message)
|
public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message)
|
||||||
{
|
{
|
||||||
this.Level = level;
|
Level = level;
|
||||||
this.Time = time;
|
Time = time;
|
||||||
this.ThreadId = threadId;
|
ThreadId = threadId;
|
||||||
this.Message = message;
|
Message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message, object data)
|
public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message, object data)
|
||||||
{
|
{
|
||||||
this.Level = level;
|
Level = level;
|
||||||
this.Time = time;
|
Time = time;
|
||||||
this.ThreadId = threadId;
|
ThreadId = threadId;
|
||||||
this.Message = message;
|
Message = message;
|
||||||
this.Data = data;
|
Data = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -187,7 +187,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
|
||||||
|
|
||||||
public static string GetUbName(GalShaderType shaderType, int slot)
|
public static string GetUbName(GalShaderType shaderType, int slot)
|
||||||
{
|
{
|
||||||
string ubName = OperandManager.GetShaderStagePrefix(shaderType);
|
string ubName = GetShaderStagePrefix(shaderType);
|
||||||
|
|
||||||
ubName += "_" + DefaultNames.UniformNamePrefix + slot;
|
ubName += "_" + DefaultNames.UniformNamePrefix + slot;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv
|
||||||
};
|
};
|
||||||
|
|
||||||
_baseFile = baseFile;
|
_baseFile = baseFile;
|
||||||
Path = LibHac.Fs.PathTools.Normalize(path);
|
Path = PathTools.Normalize(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read(u32 readOption, u64 offset, u64 size) -> (u64 out_size, buffer<u8, 0x46, 0> out_buf)
|
// Read(u32 readOption, u64 offset, u64 size) -> (u64 out_size, buffer<u8, 0x46, 0> out_buf)
|
||||||
|
|
|
@ -306,7 +306,7 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LibHac.Fs.DirectoryEntryType entryType = _provider.GetEntryType(name);
|
DirectoryEntryType entryType = _provider.GetEntryType(name);
|
||||||
|
|
||||||
context.ResponseData.Write((int)entryType);
|
context.ResponseData.Write((int)entryType);
|
||||||
}
|
}
|
||||||
|
|
|
@ -312,7 +312,7 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv
|
||||||
|
|
||||||
private void ImportTitleKeysFromNsp(LibHac.Fs.IFileSystem nsp, Keyset keySet)
|
private void ImportTitleKeysFromNsp(LibHac.Fs.IFileSystem nsp, Keyset keySet)
|
||||||
{
|
{
|
||||||
foreach (LibHac.Fs.DirectoryEntry ticketEntry in nsp.EnumerateEntries("*.tik"))
|
foreach (DirectoryEntry ticketEntry in nsp.EnumerateEntries("*.tik"))
|
||||||
{
|
{
|
||||||
Ticket ticket = new Ticket(nsp.OpenFile(ticketEntry.FullPath, OpenMode.Read).AsStream());
|
Ticket ticket = new Ticket(nsp.OpenFile(ticketEntry.FullPath, OpenMode.Read).AsStream());
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ namespace Ryujinx.HLE.HOS.Services.Android
|
||||||
|
|
||||||
if (Header.IntsCount != 0x51)
|
if (Header.IntsCount != 0x51)
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException($"Unexpected Graphic Buffer ints count (expected 0x51, found 0x{Header.IntsCount:x}");
|
throw new NotImplementedException($"Unexpected Graphic Buffer ints count (expected 0x51, found 0x{Header.IntsCount:x}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Buffer = reader.ReadStruct<NvGraphicBuffer>();
|
Buffer = reader.ReadStruct<NvGraphicBuffer>();
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace Ryujinx.Profiler.UI.SharpFontHelpers
|
||||||
|
|
||||||
private string GetFontPath()
|
private string GetFontPath()
|
||||||
{
|
{
|
||||||
string fontFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.Fonts);
|
string fontFolder = Environment.GetFolderPath(Environment.SpecialFolder.Fonts);
|
||||||
|
|
||||||
// Only uses Arial, add more fonts here if wanted
|
// Only uses Arial, add more fonts here if wanted
|
||||||
string path = Path.Combine(fontFolder, "arial.ttf");
|
string path = Path.Combine(fontFolder, "arial.ttf");
|
||||||
|
|
|
@ -9,8 +9,8 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
|
|
||||||
public IndexedProperty(Func<TIndex, TValue> getFunc, Action<TIndex, TValue> setAction)
|
public IndexedProperty(Func<TIndex, TValue> getFunc, Action<TIndex, TValue> setAction)
|
||||||
{
|
{
|
||||||
this.GetFunc = getFunc;
|
GetFunc = getFunc;
|
||||||
this.SetAction = setAction;
|
SetAction = setAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TValue this[TIndex i]
|
public TValue this[TIndex i]
|
||||||
|
|
|
@ -31,38 +31,38 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
|
|
||||||
public ulong LR
|
public ulong LR
|
||||||
{
|
{
|
||||||
get { return GetRegister(Native.ArmRegister.LR); }
|
get { return GetRegister(ArmRegister.LR); }
|
||||||
set { SetRegister(Native.ArmRegister.LR, value); }
|
set { SetRegister(ArmRegister.LR, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong SP
|
public ulong SP
|
||||||
{
|
{
|
||||||
get { return GetRegister(Native.ArmRegister.SP); }
|
get { return GetRegister(ArmRegister.SP); }
|
||||||
set { SetRegister(Native.ArmRegister.SP, value); }
|
set { SetRegister(ArmRegister.SP, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong PC
|
public ulong PC
|
||||||
{
|
{
|
||||||
get { return GetRegister(Native.ArmRegister.PC); }
|
get { return GetRegister(ArmRegister.PC); }
|
||||||
set { SetRegister(Native.ArmRegister.PC, value); }
|
set { SetRegister(ArmRegister.PC, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint Pstate
|
public uint Pstate
|
||||||
{
|
{
|
||||||
get { return (uint)GetRegister(Native.ArmRegister.PSTATE); }
|
get { return (uint)GetRegister(ArmRegister.PSTATE); }
|
||||||
set { SetRegister(Native.ArmRegister.PSTATE, (uint)value); }
|
set { SetRegister(ArmRegister.PSTATE, (uint)value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Fpcr
|
public int Fpcr
|
||||||
{
|
{
|
||||||
get { return (int)GetRegister(Native.ArmRegister.FPCR); }
|
get { return (int)GetRegister(ArmRegister.FPCR); }
|
||||||
set { SetRegister(Native.ArmRegister.FPCR, (uint)value); }
|
set { SetRegister(ArmRegister.FPCR, (uint)value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Fpsr
|
public int Fpsr
|
||||||
{
|
{
|
||||||
get { return (int)GetRegister(Native.ArmRegister.FPSR); }
|
get { return (int)GetRegister(ArmRegister.FPSR); }
|
||||||
set { SetRegister(Native.ArmRegister.FPSR, (uint)value); }
|
set { SetRegister(ArmRegister.FPSR, (uint)value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool OverflowFlag
|
public bool OverflowFlag
|
||||||
|
@ -91,18 +91,18 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
|
|
||||||
public UnicornAArch64()
|
public UnicornAArch64()
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_open((uint)Native.UnicornArch.UC_ARCH_ARM64, (uint)Native.UnicornMode.UC_MODE_LITTLE_ENDIAN, out uc));
|
Interface.Checked(Interface.uc_open((uint)UnicornArch.UC_ARCH_ARM64, (uint)UnicornMode.UC_MODE_LITTLE_ENDIAN, out uc));
|
||||||
SetRegister(Native.ArmRegister.CPACR_EL1, 0x00300000);
|
SetRegister(ArmRegister.CPACR_EL1, 0x00300000);
|
||||||
}
|
}
|
||||||
|
|
||||||
~UnicornAArch64()
|
~UnicornAArch64()
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_close(uc));
|
Interface.Checked(Interface.uc_close(uc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RunForCount(ulong count)
|
public void RunForCount(ulong count)
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_emu_start(uc, this.PC, 0xFFFFFFFFFFFFFFFFu, 0, count));
|
Interface.Checked(Interface.uc_emu_start(uc, PC, 0xFFFFFFFFFFFFFFFFu, 0, count));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Step()
|
public void Step()
|
||||||
|
@ -110,94 +110,94 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
RunForCount(1);
|
RunForCount(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static Native.ArmRegister[] X_registers = new Native.ArmRegister[31]
|
internal static ArmRegister[] X_registers = new ArmRegister[31]
|
||||||
{
|
{
|
||||||
Native.ArmRegister.X0,
|
ArmRegister.X0,
|
||||||
Native.ArmRegister.X1,
|
ArmRegister.X1,
|
||||||
Native.ArmRegister.X2,
|
ArmRegister.X2,
|
||||||
Native.ArmRegister.X3,
|
ArmRegister.X3,
|
||||||
Native.ArmRegister.X4,
|
ArmRegister.X4,
|
||||||
Native.ArmRegister.X5,
|
ArmRegister.X5,
|
||||||
Native.ArmRegister.X6,
|
ArmRegister.X6,
|
||||||
Native.ArmRegister.X7,
|
ArmRegister.X7,
|
||||||
Native.ArmRegister.X8,
|
ArmRegister.X8,
|
||||||
Native.ArmRegister.X9,
|
ArmRegister.X9,
|
||||||
Native.ArmRegister.X10,
|
ArmRegister.X10,
|
||||||
Native.ArmRegister.X11,
|
ArmRegister.X11,
|
||||||
Native.ArmRegister.X12,
|
ArmRegister.X12,
|
||||||
Native.ArmRegister.X13,
|
ArmRegister.X13,
|
||||||
Native.ArmRegister.X14,
|
ArmRegister.X14,
|
||||||
Native.ArmRegister.X15,
|
ArmRegister.X15,
|
||||||
Native.ArmRegister.X16,
|
ArmRegister.X16,
|
||||||
Native.ArmRegister.X17,
|
ArmRegister.X17,
|
||||||
Native.ArmRegister.X18,
|
ArmRegister.X18,
|
||||||
Native.ArmRegister.X19,
|
ArmRegister.X19,
|
||||||
Native.ArmRegister.X20,
|
ArmRegister.X20,
|
||||||
Native.ArmRegister.X21,
|
ArmRegister.X21,
|
||||||
Native.ArmRegister.X22,
|
ArmRegister.X22,
|
||||||
Native.ArmRegister.X23,
|
ArmRegister.X23,
|
||||||
Native.ArmRegister.X24,
|
ArmRegister.X24,
|
||||||
Native.ArmRegister.X25,
|
ArmRegister.X25,
|
||||||
Native.ArmRegister.X26,
|
ArmRegister.X26,
|
||||||
Native.ArmRegister.X27,
|
ArmRegister.X27,
|
||||||
Native.ArmRegister.X28,
|
ArmRegister.X28,
|
||||||
Native.ArmRegister.X29,
|
ArmRegister.X29,
|
||||||
Native.ArmRegister.X30,
|
ArmRegister.X30,
|
||||||
};
|
};
|
||||||
|
|
||||||
internal static Native.ArmRegister[] Q_registers = new Native.ArmRegister[32]
|
internal static ArmRegister[] Q_registers = new ArmRegister[32]
|
||||||
{
|
{
|
||||||
Native.ArmRegister.Q0,
|
ArmRegister.Q0,
|
||||||
Native.ArmRegister.Q1,
|
ArmRegister.Q1,
|
||||||
Native.ArmRegister.Q2,
|
ArmRegister.Q2,
|
||||||
Native.ArmRegister.Q3,
|
ArmRegister.Q3,
|
||||||
Native.ArmRegister.Q4,
|
ArmRegister.Q4,
|
||||||
Native.ArmRegister.Q5,
|
ArmRegister.Q5,
|
||||||
Native.ArmRegister.Q6,
|
ArmRegister.Q6,
|
||||||
Native.ArmRegister.Q7,
|
ArmRegister.Q7,
|
||||||
Native.ArmRegister.Q8,
|
ArmRegister.Q8,
|
||||||
Native.ArmRegister.Q9,
|
ArmRegister.Q9,
|
||||||
Native.ArmRegister.Q10,
|
ArmRegister.Q10,
|
||||||
Native.ArmRegister.Q11,
|
ArmRegister.Q11,
|
||||||
Native.ArmRegister.Q12,
|
ArmRegister.Q12,
|
||||||
Native.ArmRegister.Q13,
|
ArmRegister.Q13,
|
||||||
Native.ArmRegister.Q14,
|
ArmRegister.Q14,
|
||||||
Native.ArmRegister.Q15,
|
ArmRegister.Q15,
|
||||||
Native.ArmRegister.Q16,
|
ArmRegister.Q16,
|
||||||
Native.ArmRegister.Q17,
|
ArmRegister.Q17,
|
||||||
Native.ArmRegister.Q18,
|
ArmRegister.Q18,
|
||||||
Native.ArmRegister.Q19,
|
ArmRegister.Q19,
|
||||||
Native.ArmRegister.Q20,
|
ArmRegister.Q20,
|
||||||
Native.ArmRegister.Q21,
|
ArmRegister.Q21,
|
||||||
Native.ArmRegister.Q22,
|
ArmRegister.Q22,
|
||||||
Native.ArmRegister.Q23,
|
ArmRegister.Q23,
|
||||||
Native.ArmRegister.Q24,
|
ArmRegister.Q24,
|
||||||
Native.ArmRegister.Q25,
|
ArmRegister.Q25,
|
||||||
Native.ArmRegister.Q26,
|
ArmRegister.Q26,
|
||||||
Native.ArmRegister.Q27,
|
ArmRegister.Q27,
|
||||||
Native.ArmRegister.Q28,
|
ArmRegister.Q28,
|
||||||
Native.ArmRegister.Q29,
|
ArmRegister.Q29,
|
||||||
Native.ArmRegister.Q30,
|
ArmRegister.Q30,
|
||||||
Native.ArmRegister.Q31,
|
ArmRegister.Q31,
|
||||||
};
|
};
|
||||||
|
|
||||||
internal ulong GetRegister(Native.ArmRegister register)
|
internal ulong GetRegister(ArmRegister register)
|
||||||
{
|
{
|
||||||
byte[] value_bytes = new byte[8];
|
byte[] value_bytes = new byte[8];
|
||||||
Native.Interface.Checked(Native.Interface.uc_reg_read(uc, (int)register, value_bytes));
|
Interface.Checked(Interface.uc_reg_read(uc, (int)register, value_bytes));
|
||||||
return (ulong)BitConverter.ToInt64(value_bytes, 0);
|
return (ulong)BitConverter.ToInt64(value_bytes, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void SetRegister(Native.ArmRegister register, ulong value)
|
internal void SetRegister(ArmRegister register, ulong value)
|
||||||
{
|
{
|
||||||
byte[] value_bytes = BitConverter.GetBytes(value);
|
byte[] value_bytes = BitConverter.GetBytes(value);
|
||||||
Native.Interface.Checked(Native.Interface.uc_reg_write(uc, (int)register, value_bytes));
|
Interface.Checked(Interface.uc_reg_write(uc, (int)register, value_bytes));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Vector128<float> GetVector(Native.ArmRegister register)
|
internal Vector128<float> GetVector(ArmRegister register)
|
||||||
{
|
{
|
||||||
byte[] value_bytes = new byte[16];
|
byte[] value_bytes = new byte[16];
|
||||||
Native.Interface.Checked(Native.Interface.uc_reg_read(uc, (int)register, value_bytes));
|
Interface.Checked(Interface.uc_reg_read(uc, (int)register, value_bytes));
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
fixed (byte* p = &value_bytes[0])
|
fixed (byte* p = &value_bytes[0])
|
||||||
|
@ -207,7 +207,7 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void SetVector(Native.ArmRegister register, Vector128<float> value)
|
internal void SetVector(ArmRegister register, Vector128<float> value)
|
||||||
{
|
{
|
||||||
byte[] value_bytes = new byte[16];
|
byte[] value_bytes = new byte[16];
|
||||||
unsafe
|
unsafe
|
||||||
|
@ -217,7 +217,7 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
Sse.Store((float*)p, value);
|
Sse.Store((float*)p, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Native.Interface.Checked(Native.Interface.uc_reg_write(uc, (int)register, value_bytes));
|
Interface.Checked(Interface.uc_reg_write(uc, (int)register, value_bytes));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong GetX(int index)
|
public ulong GetX(int index)
|
||||||
|
@ -251,7 +251,7 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
public byte[] MemoryRead(ulong address, ulong size)
|
public byte[] MemoryRead(ulong address, ulong size)
|
||||||
{
|
{
|
||||||
byte[] value = new byte[size];
|
byte[] value = new byte[size];
|
||||||
Native.Interface.Checked(Native.Interface.uc_mem_read(uc, address, value, size));
|
Interface.Checked(Interface.uc_mem_read(uc, address, value, size));
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
|
|
||||||
public void MemoryWrite(ulong address, byte[] value)
|
public void MemoryWrite(ulong address, byte[] value)
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_mem_write(uc, address, value, (ulong)value.Length));
|
Interface.Checked(Interface.uc_mem_write(uc, address, value, (ulong)value.Length));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MemoryWrite8 (ulong address, byte value) { MemoryWrite(address, new byte[]{value}); }
|
public void MemoryWrite8 (ulong address, byte value) { MemoryWrite(address, new byte[]{value}); }
|
||||||
|
@ -275,23 +275,23 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
|
|
||||||
public void MemoryMap(ulong address, ulong size, MemoryPermission permissions)
|
public void MemoryMap(ulong address, ulong size, MemoryPermission permissions)
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_mem_map(uc, address, size, (uint)permissions));
|
Interface.Checked(Interface.uc_mem_map(uc, address, size, (uint)permissions));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MemoryUnmap(ulong address, ulong size)
|
public void MemoryUnmap(ulong address, ulong size)
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_mem_unmap(uc, address, size));
|
Interface.Checked(Interface.uc_mem_unmap(uc, address, size));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MemoryProtect(ulong address, ulong size, MemoryPermission permissions)
|
public void MemoryProtect(ulong address, ulong size, MemoryPermission permissions)
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_mem_protect(uc, address, size, (uint)permissions));
|
Interface.Checked(Interface.uc_mem_protect(uc, address, size, (uint)permissions));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DumpMemoryInformation()
|
public void DumpMemoryInformation()
|
||||||
{
|
{
|
||||||
Native.Interface.Checked(Native.Interface.uc_mem_regions(uc, out IntPtr regions_raw, out uint length));
|
Interface.Checked(Interface.uc_mem_regions(uc, out IntPtr regions_raw, out uint length));
|
||||||
Native.Interface.MarshalArrayOf<Native.UnicornMemoryRegion>(regions_raw, (int)length, out var regions);
|
Interface.MarshalArrayOf<UnicornMemoryRegion>(regions_raw, (int)length, out var regions);
|
||||||
foreach (var region in regions)
|
foreach (var region in regions)
|
||||||
{
|
{
|
||||||
Console.WriteLine("region: begin {0:X16} end {1:X16} perms {2:X8}", region.begin, region.end, region.perms);
|
Console.WriteLine("region: begin {0:X16} end {1:X16} perms {2:X8}", region.begin, region.end, region.perms);
|
||||||
|
@ -302,7 +302,7 @@ namespace Ryujinx.Tests.Unicorn
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Native.Interface.uc_version(out uint major, out uint minor);
|
Interface.uc_version(out uint major, out uint minor);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (DllNotFoundException)
|
catch (DllNotFoundException)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue