aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Tests/Cpu/CpuTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Tests/Cpu/CpuTest.cs')
-rw-r--r--src/Ryujinx.Tests/Cpu/CpuTest.cs24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/Ryujinx.Tests/Cpu/CpuTest.cs b/src/Ryujinx.Tests/Cpu/CpuTest.cs
index 979b313b..ad4ba539 100644
--- a/src/Ryujinx.Tests/Cpu/CpuTest.cs
+++ b/src/Ryujinx.Tests/Cpu/CpuTest.cs
@@ -13,9 +13,9 @@ namespace Ryujinx.Tests.Cpu
[TestFixture]
public class CpuTest
{
- protected const ulong Size = 0x1000;
- protected const ulong CodeBaseAddress = 0x1000;
- protected const ulong DataBaseAddress = CodeBaseAddress + Size;
+ protected static readonly ulong Size = MemoryBlock.GetPageSize();
+ protected static ulong CodeBaseAddress = Size;
+ protected static ulong DataBaseAddress = CodeBaseAddress + Size;
private static bool Ignore_FpcrFz = false;
private static bool Ignore_FpcrDn = false;
@@ -39,12 +39,24 @@ namespace Ryujinx.Tests.Cpu
[SetUp]
public void Setup()
{
- _currAddress = CodeBaseAddress;
+ int pageBits = (int)ulong.Log2(Size);
_ram = new MemoryBlock(Size * 2);
- _memory = new MemoryManager(_ram, 1ul << 16);
+ _memory = new MemoryManager(_ram, 1ul << (pageBits + 4));
_memory.IncrementReferenceCount();
- _memory.Map(CodeBaseAddress, 0, Size * 2, MemoryMapFlags.Private);
+
+ // Some tests depends on hardcoded address that were computed for 4KiB.
+ // We change the layout on non 4KiB platforms to keep compat here.
+ if (Size > 0x1000)
+ {
+ DataBaseAddress = 0;
+ CodeBaseAddress = Size;
+ }
+
+ _currAddress = CodeBaseAddress;
+
+ _memory.Map(CodeBaseAddress, 0, Size, MemoryMapFlags.Private);
+ _memory.Map(DataBaseAddress, Size, Size, MemoryMapFlags.Private);
_context = CpuContext.CreateExecutionContext();
Translator.IsReadyForTranslation.Set();