Remove address space mirror and tweak address space layout when host has small adress space

This commit is contained in:
Gabriel A 2023-07-12 16:17:58 -03:00 committed by Emmanuel Hansen
parent 2ad3605cdb
commit 93cf57913c
8 changed files with 1046 additions and 1595 deletions

View file

@ -213,11 +213,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
break;
case AddressSpaceType.Addr39Bits:
if (_reservedAddressSpaceSize < addrSpaceEnd)
{
int addressSpaceWidth = (int)ulong.Log2(_reservedAddressSpaceSize);
ulong reservedAddressSpaceSize = _reservedAddressSpaceSize;
aliasRegion.Size = 1UL << (addressSpaceWidth - 3);
if (reservedAddressSpaceSize < addrSpaceEnd)
{
int addressSpaceWidth = (int)ulong.Log2(reservedAddressSpaceSize);
aliasRegion.Size = reservedAddressSpaceSize >= 0x1800000000 ? 0x1000000000 : 1UL << (addressSpaceWidth - 3);
heapRegion.Size = 0x180000000;
stackRegion.Size = 1UL << (addressSpaceWidth - 8);
tlsIoRegion.Size = 1UL << (addressSpaceWidth - 3);
@ -226,7 +228,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
stackAndTlsIoStart = 0;
stackAndTlsIoEnd = 0;
AslrRegionStart = Math.Max(reservedSize, 0x8000000);
addrSpaceEnd = reservedSize + (1UL << addressSpaceWidth);
addrSpaceEnd = reservedSize + reservedAddressSpaceSize;
AslrRegionEnd = addrSpaceEnd;
}
else