mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-08-03 00:27:11 +02:00
Improve access to system registers by using properties, also use exclusive region granularity on exclusive load/stores, and ensure that acquires without releases won't hold the address forever, remove unused ALU rev method
This commit is contained in:
parent
6ae5587b5e
commit
2347c44bbf
9 changed files with 130 additions and 138 deletions
|
@ -19,7 +19,7 @@ namespace Ryujinx.OsHle.Objects
|
|||
{
|
||||
Context.Memory.WriteInt32(Position + Offset, 5);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ namespace Ryujinx.OsHle
|
|||
Thread.Registers.SvcCall += SvcHandler.SvcCall;
|
||||
Thread.Registers.ProcessId = ProcessId;
|
||||
Thread.Registers.ThreadId = Ns.Os.IdGen.GenerateId();
|
||||
Thread.Registers.TlsAddr = TlsPageAddr + TlsSlot * TlsSize;
|
||||
Thread.Registers.Tpidr = TlsPageAddr + TlsSlot * TlsSize;
|
||||
Thread.Registers.X0 = (ulong)ArgsPtr;
|
||||
Thread.Registers.X1 = (ulong)Handle;
|
||||
Thread.Registers.X31 = (ulong)StackTop;
|
||||
|
@ -165,7 +165,7 @@ namespace Ryujinx.OsHle
|
|||
{
|
||||
if (sender is AThread Thread)
|
||||
{
|
||||
TlsSlots.TryRemove(GetTlsSlot(Thread.Registers.TlsAddr), out _);
|
||||
TlsSlots.TryRemove(GetTlsSlot(Thread.Registers.Tpidr), out _);
|
||||
|
||||
Ns.Os.IdGen.DeleteId(Thread.ThreadId);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace Ryujinx.OsHle.Svc
|
|||
|
||||
private static void SvcGetSystemTick(Switch Ns, ARegisters Registers, AMemory Memory)
|
||||
{
|
||||
Registers.X0 = (ulong)Registers.GetSystemReg(3, 3, 14, 0, 1);
|
||||
Registers.X0 = (ulong)Registers.CntpctEl0;
|
||||
}
|
||||
|
||||
private static void SvcConnectToNamedPort(Switch Ns, ARegisters Registers, AMemory Memory)
|
||||
|
@ -70,7 +70,7 @@ namespace Ryujinx.OsHle.Svc
|
|||
|
||||
private static void SendSyncRequest(Switch Ns, ARegisters Registers, AMemory Memory, bool IsUser)
|
||||
{
|
||||
long CmdPtr = Registers.TlsAddr;
|
||||
long CmdPtr = Registers.Tpidr;
|
||||
long Size = 0x100;
|
||||
int Handle = 0;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue