test: Make tests runnable on system without 4KiB page size (#5184)
* ARMeilleure: Do not hardcode 4KiB page size in JitCache * test: Do not hardcode page size to 4KiB for Ryujinx.Tests.Memory.Tests Fix running tests on Asahi Linux with 16KiB pages. * test: Do not hardcode page size to 4KiB for Ryujinx.Tests.Cpu Fix running tests on Asahi Linux. Test runner still crash when trying to run all test suite. * test: Do not hardcode page size to 4KiB for Ryujinx.Tests.Cpu Fix somecrashes on Asahi Linux. * test: Ignore Vshl test on ARM64 due to unicorn crashes * test: Workaround hardcoded size on some tests Change mapping of code and data in case of non 4KiB configuration. * test: Make CpuTestT32Flow depends on code address Fix failure with different page size. * test: Disable CpuTestThumb.TestRandomTestCases when page size isn't 4KiB The test data needs to be reevaluated to take different page size into account. * Address gdkchan's comments
This commit is contained in:
parent
105c9712c1
commit
6f28c4abad
8 changed files with 93 additions and 47 deletions
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue