Browse Source

[dynarmic, jit] add address mapping checks for jit service

Signed-off-by: lizzie <lizzie@eden-emu.dev>
lizzie/jit-addresschecks
lizzie 4 days ago
parent
commit
18c81c2f5c
  1. 2
      src/core/arm/dynarmic/arm_dynarmic_64.cpp
  2. 2
      src/core/hle/service/jit/jit_context.cpp

2
src/core/arm/dynarmic/arm_dynarmic_64.cpp

@ -226,7 +226,7 @@ void ArmDynarmic64::MakeJit(Common::PageTable* page_table, std::size_t address_s
config.only_detect_misalignment_via_page_table_on_page_boundary = true;
config.fastmem_pointer = page_table->fastmem_arena ?
std::optional<uintptr_t>{reinterpret_cast<uintptr_t>(page_table->fastmem_arena)} :
std::optional<uintptr_t>{uintptr_t(page_table->fastmem_arena)} :
std::nullopt;
config.fastmem_address_space_bits = std::uint32_t(address_space_bits);
config.silently_mirror_fastmem = false;

2
src/core/hle/service/jit/jit_context.cpp

@ -48,6 +48,8 @@ public:
mapped_ranges{mapped_ranges_}, parent{parent_} {}
std::optional<std::uint32_t> MemoryReadCode(VAddr vaddr) override {
if (!memory.IsValidVirtualAddressRange(vaddr, sizeof(u32)))
return std::nullopt;
static_assert(Core::Memory::YUZU_PAGESIZE == Dynarmic::CODE_PAGE_SIZE);
auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
if (last_code_addr != aligned_vaddr) {

Loading…
Cancel
Save