aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Core/OsHle/Process.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-02-23 21:59:38 -0300
committergdkchan <gab.dark.100@gmail.com>2018-02-23 21:59:38 -0300
commit3936c934482a587635bc5a1e47962551aeb53aeb (patch)
tree7df4ab78fe30ea27edcda9e54a32a8d132717225 /Ryujinx.Core/OsHle/Process.cs
parent2ed733b1d5addad027f48acfdd407e64b71427fc (diff)
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
Diffstat (limited to 'Ryujinx.Core/OsHle/Process.cs')
-rw-r--r--Ryujinx.Core/OsHle/Process.cs19
1 files changed, 10 insertions, 9 deletions
diff --git a/Ryujinx.Core/OsHle/Process.cs b/Ryujinx.Core/OsHle/Process.cs
index 022dc0f9..3e265ed3 100644
--- a/Ryujinx.Core/OsHle/Process.cs
+++ b/Ryujinx.Core/OsHle/Process.cs
@@ -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);