Map heap on heap base region, fix for thread start on homebrew, add FCVTMU and FCVTPU (general) instructions, fix FMOV (higher 64 bits) encodings, improve emit code for FCVT* (general) instructions
This commit is contained in:
parent
2ed733b1d5
commit
3936c93448
14 changed files with 109 additions and 101 deletions
|
@ -86,10 +86,10 @@ namespace Ryujinx.Core.OsHle
|
|||
|
||||
public void InitializeHeap()
|
||||
{
|
||||
Memory.Manager.SetHeapAddr((ImageBase + 0x3fffffff) & ~0x3fffffff);
|
||||
Memory.Manager.SetHeapAddr(MemoryRegions.HeapRegionAddress);
|
||||
}
|
||||
|
||||
public bool Run()
|
||||
public bool Run(bool UseHbAbi = false)
|
||||
{
|
||||
if (Executables.Count == 0)
|
||||
{
|
||||
|
@ -109,6 +109,14 @@ namespace Ryujinx.Core.OsHle
|
|||
|
||||
MainThread = Ns.Os.Handles.GetData<HThread>(Handle);
|
||||
|
||||
if (UseHbAbi)
|
||||
{
|
||||
Homebrew Homebrew_ABI = new Homebrew(Memory, Executables[0].ImageEnd, (long)Handle);
|
||||
|
||||
MainThread.Thread.ThreadState.X0 = (ulong)Executables[0].ImageEnd;
|
||||
MainThread.Thread.ThreadState.X1 = ulong.MaxValue;
|
||||
}
|
||||
|
||||
Scheduler.StartThread(MainThread);
|
||||
|
||||
return true;
|
||||
|
@ -186,13 +194,6 @@ namespace Ryujinx.Core.OsHle
|
|||
Thread.ThreadState.X1 = (ulong)Handle;
|
||||
Thread.ThreadState.X31 = (ulong)StackTop;
|
||||
|
||||
if (Executables[0].Extension == Extensions.NRO)
|
||||
{
|
||||
Homebrew Homebrew_ABI = new Homebrew(Memory, Executables[0].ImageEnd, (long)Handle);
|
||||
Thread.ThreadState.X0 = (ulong)Executables[0].ImageEnd;
|
||||
Thread.ThreadState.X1 = 0xFFFFFFFFFFFFFFFF;
|
||||
}
|
||||
|
||||
Thread.WorkFinished += ThreadFinished;
|
||||
|
||||
ThreadsByTpidr.TryAdd(Thread.ThreadState.Tpidr, ThreadHnd);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue