aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/ProgramLoader.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2020-12-13 04:30:27 -0300
committerGitHub <noreply@github.com>2020-12-13 08:30:27 +0100
commit19d18662ea3ed5470898ed2b7bbb06d45f6004dd (patch)
tree21ceeba0aee0fca1729ced4cf7c86bd9c7ff7ad2 /Ryujinx.HLE/HOS/ProgramLoader.cs
parentef157bbe263e60b2e9c3259e5aee20a297c5f5bc (diff)
Correct type of executable sizes (#1802)
Diffstat (limited to 'Ryujinx.HLE/HOS/ProgramLoader.cs')
-rw-r--r--Ryujinx.HLE/HOS/ProgramLoader.cs38
1 files changed, 17 insertions, 21 deletions
diff --git a/Ryujinx.HLE/HOS/ProgramLoader.cs b/Ryujinx.HLE/HOS/ProgramLoader.cs
index 637c3efc..79f8af7a 100644
--- a/Ryujinx.HLE/HOS/ProgramLoader.cs
+++ b/Ryujinx.HLE/HOS/ProgramLoader.cs
@@ -21,16 +21,16 @@ namespace Ryujinx.HLE.HOS
public static bool LoadKip(KernelContext context, KipExecutable kip)
{
- int endOffset = kip.DataOffset + kip.Data.Length;
+ uint endOffset = kip.DataOffset + (uint)kip.Data.Length;
if (kip.BssSize != 0)
{
endOffset = kip.BssOffset + kip.BssSize;
}
- int codeSize = BitUtils.AlignUp(kip.TextOffset + endOffset, KMemoryManager.PageSize);
+ uint codeSize = BitUtils.AlignUp(kip.TextOffset + endOffset, KMemoryManager.PageSize);
- int codePagesCount = codeSize / KMemoryManager.PageSize;
+ int codePagesCount = (int)(codeSize / KMemoryManager.PageSize);
ulong codeBaseAddress = kip.Is64BitAddressSpace ? 0x8000000UL : 0x200000UL;
@@ -124,35 +124,31 @@ namespace Ryujinx.HLE.HOS
return true;
}
- public static bool LoadNsos(
- KernelContext context,
- Npdm metaData,
- byte[] arguments = null,
- params IExecutable[] executables)
+ public static bool LoadNsos(KernelContext context, Npdm metaData, byte[] arguments = null, params IExecutable[] executables)
{
ulong argsStart = 0;
- int argsSize = 0;
+ uint argsSize = 0;
ulong codeStart = metaData.Is64Bit ? 0x8000000UL : 0x200000UL;
- int codeSize = 0;
+ uint codeSize = 0;
ulong[] nsoBase = new ulong[executables.Length];
for (int index = 0; index < executables.Length; index++)
{
- IExecutable staticObject = executables[index];
+ IExecutable nso = executables[index];
- int textEnd = staticObject.TextOffset + staticObject.Text.Length;
- int roEnd = staticObject.RoOffset + staticObject.Ro.Length;
- int dataEnd = staticObject.DataOffset + staticObject.Data.Length + staticObject.BssSize;
+ uint textEnd = nso.TextOffset + (uint)nso.Text.Length;
+ uint roEnd = nso.RoOffset + (uint)nso.Ro.Length;
+ uint dataEnd = nso.DataOffset + (uint)nso.Data.Length + nso.BssSize;
- int nsoSize = textEnd;
+ uint nsoSize = textEnd;
- if ((uint)nsoSize < (uint)roEnd)
+ if (nsoSize < roEnd)
{
nsoSize = roEnd;
}
- if ((uint)nsoSize < (uint)dataEnd)
+ if (nsoSize < dataEnd)
{
nsoSize = dataEnd;
}
@@ -167,16 +163,16 @@ namespace Ryujinx.HLE.HOS
{
argsStart = (ulong)codeSize;
- argsSize = BitUtils.AlignDown(arguments.Length * 2 + ArgsTotalSize - 1, KMemoryManager.PageSize);
+ argsSize = (uint)BitUtils.AlignDown(arguments.Length * 2 + ArgsTotalSize - 1, KMemoryManager.PageSize);
codeSize += argsSize;
}
}
PtcProfiler.StaticCodeStart = codeStart;
- PtcProfiler.StaticCodeSize = codeSize;
+ PtcProfiler.StaticCodeSize = (int)codeSize;
- int codePagesCount = codeSize / KMemoryManager.PageSize;
+ int codePagesCount = (int)(codeSize / KMemoryManager.PageSize);
int personalMmHeapPagesCount = metaData.PersonalMmHeapSize / KMemoryManager.PageSize;
@@ -284,7 +280,7 @@ namespace Ryujinx.HLE.HOS
process.CpuMemory.Write(roStart, image.Ro);
process.CpuMemory.Write(dataStart, image.Data);
- MemoryHelper.FillWithZeros(process.CpuMemory, (long)bssStart, image.BssSize);
+ process.CpuMemory.Fill(bssStart, image.BssSize, 0);
KernelResult SetProcessMemoryPermission(ulong address, ulong size, KMemoryPermission permission)
{