From 90b57a78beea183b62a8e873480765d4989cdfce Mon Sep 17 00:00:00 2001 From: LotP1 Date: Fri, 29 Nov 2024 22:31:23 +0100 Subject: [PATCH] fix incorrect masking storing 36 bits of data in a 32 bit integer doesn't work so well --- src/ARMeilleure/Common/AddressTableLevel.cs | 4 ++-- src/Ryujinx.Cpu/AddressTable.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ARMeilleure/Common/AddressTableLevel.cs b/src/ARMeilleure/Common/AddressTableLevel.cs index 6107726ee..af3b9b99f 100644 --- a/src/ARMeilleure/Common/AddressTableLevel.cs +++ b/src/ARMeilleure/Common/AddressTableLevel.cs @@ -36,9 +36,9 @@ namespace ARMeilleure.Common /// /// Guest address /// Value of the from the specified guest - public int GetValue(ulong address) + public long GetValue(ulong address) { - return (int)((address & Mask) >> Index); + return (long)((address & Mask) >> Index); } } } diff --git a/src/Ryujinx.Cpu/AddressTable.cs b/src/Ryujinx.Cpu/AddressTable.cs index d87b12ab0..038a2009c 100644 --- a/src/Ryujinx.Cpu/AddressTable.cs +++ b/src/Ryujinx.Cpu/AddressTable.cs @@ -238,7 +238,7 @@ namespace ARMeilleure.Common { TEntry* page = GetPage(address); - int index = Levels[^1].GetValue(address); + long index = Levels[^1].GetValue(address); EnsureMapped((IntPtr)(page + index));