Browse Source

[dynarmic] test block linking further

pull/203/head
lizzie 8 months ago
committed by crueter
parent
commit
ffafa5eae1
  1. 2
      src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
  2. 2
      src/dynarmic/src/dynarmic/backend/x64/hostloc.h
  3. 1
      src/dynarmic/src/dynarmic/frontend/A64/translate/impl/a64_branch.cpp
  4. 102
      src/dynarmic/tests/A64/real_world.cpp
  5. 59
      src/dynarmic/tests/A64/test_invalidation.cpp
  6. 1
      src/dynarmic/tests/CMakeLists.txt

2
src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp

@ -324,7 +324,7 @@ void BlockOfCode::GenRunCode(std::function<void(BlockOfCode&)> rcp) {
ABI_PushCalleeSaveRegistersAndAdjustStack(*this, sizeof(StackLayout));
mov(ABI_JIT_PTR, ABI_PARAM1);
mov(rbx, ABI_PARAM2); // save temporarily in non-volatile register
mov(rbx, ABI_PARAM2); // save temporarily in non-volatile register
if (cb.enable_cycle_counting) {
cb.GetTicksRemaining->EmitCall(*this);

2
src/dynarmic/src/dynarmic/backend/x64/hostloc.h

@ -110,6 +110,7 @@ using HostLocList = std::initializer_list<HostLoc>;
// RSP is preserved for function calls
// R13 contains fastmem pointer if any
// R14 contains the pagetable pointer
// R15 contains the JitState pointer
const HostLocList any_gpr = {
HostLoc::RAX,
@ -126,6 +127,7 @@ const HostLocList any_gpr = {
HostLoc::R12,
HostLoc::R13,
HostLoc::R14,
//HostLoc::R15,
};
// XMM0 is reserved for use by instructions that implicitly use it as an argument

1
src/dynarmic/src/dynarmic/frontend/A64/translate/impl/a64_branch.cpp

@ -21,6 +21,7 @@ bool TranslatorVisitor::B_uncond(Imm<26> imm26) {
const s64 offset = concatenate(imm26, Imm<2>{0}).SignExtend<s64>();
const u64 target = ir.PC() + offset;
//ir.SetTerm(IR::Term::LinkBlockFast{ir.current_location->SetPC(target)});
ir.SetTerm(IR::Term::LinkBlock{ir.current_location->SetPC(target)});
return false;
}

102
src/dynarmic/tests/A64/real_world.cpp
File diff suppressed because it is too large
View File

59
src/dynarmic/tests/A64/test_invalidation.cpp
File diff suppressed because it is too large
View File

1
src/dynarmic/tests/CMakeLists.txt

@ -29,6 +29,7 @@ if ("A64" IN_LIST DYNARMIC_FRONTENDS)
A64/fp_min_max.cpp
A64/misaligned_page_table.cpp
A64/test_invalidation.cpp
A64/real_world.cpp
A64/testenv.h
)
endif()

Loading…
Cancel
Save