mirror of
https://git.743378673.xyz/MeloNX/MeloNX.git
synced 2025-07-17 12:46:29 +02:00
Fix Alignment
This commit is contained in:
parent
11578ad9fa
commit
96b6f475a3
5 changed files with 63 additions and 6 deletions
|
@ -13,4 +13,35 @@ namespace Ryujinx.Cpu.LightningJit.Cache
|
|||
[LibraryImport("libc", EntryPoint = "sys_icache_invalidate", SetLastError = true)]
|
||||
public static partial void SysIcacheInvalidate(nint start, nint len);
|
||||
}
|
||||
|
||||
[SupportedOSPlatform("ios")]
|
||||
internal static partial class JitSupportDarwinAot
|
||||
{
|
||||
[LibraryImport("pthread", EntryPoint = "pthread_jit_write_protect_np")]
|
||||
private static partial void pthread_jit_write_protect_np(int enabled);
|
||||
|
||||
[LibraryImport("libc", EntryPoint = "sys_icache_invalidate")]
|
||||
private static partial void sys_icache_invalidate(IntPtr start, IntPtr length);
|
||||
|
||||
public static unsafe void Copy(IntPtr dst, IntPtr src, ulong n) {
|
||||
// When NativeAOT is in use, we can toggle per-thread write protection without worrying about breaking .NET code.
|
||||
|
||||
//pthread_jit_write_protect_np(0);
|
||||
|
||||
var srcSpan = new Span<byte>(src.ToPointer(), (int)n);
|
||||
var dstSpan = new Span<byte>(dst.ToPointer(), (int)n);
|
||||
srcSpan.CopyTo(dstSpan);
|
||||
|
||||
//pthread_jit_write_protect_np(1);
|
||||
|
||||
// Ensure that the instruction cache for this range is invalidated.
|
||||
sys_icache_invalidate(dst, (IntPtr)n);
|
||||
}
|
||||
|
||||
public static unsafe void Invalidate(IntPtr dst, ulong n)
|
||||
{
|
||||
// Ensure that the instruction cache for this range is invalidated.
|
||||
sys_icache_invalidate(dst, (IntPtr)n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue