mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-10 03:18:55 +02:00
[jit] restore support for 16KB systems
Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
parent
50ec0892c6
commit
46118baf36
3 changed files with 23 additions and 22 deletions
|
|
@ -42,12 +42,13 @@ u64 DynarmicCallbacks32::MemoryRead64(u32 vaddr) {
|
||||||
std::optional<u32> DynarmicCallbacks32::MemoryReadCode(u32 vaddr) {
|
std::optional<u32> DynarmicCallbacks32::MemoryReadCode(u32 vaddr) {
|
||||||
if (!m_memory.IsValidVirtualAddressRange(vaddr, sizeof(u32)))
|
if (!m_memory.IsValidVirtualAddressRange(vaddr, sizeof(u32)))
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
|
return m_memory.Read32(vaddr);
|
||||||
if (last_code_addr != aligned_vaddr) {
|
// auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
|
||||||
m_memory.ReadBlock(aligned_vaddr, &cached_code_page, sizeof(cached_code_page));
|
// if (last_code_addr != aligned_vaddr) {
|
||||||
last_code_addr = aligned_vaddr;
|
// m_memory.ReadBlock(aligned_vaddr, &cached_code_page, sizeof(cached_code_page));
|
||||||
}
|
// last_code_addr = aligned_vaddr;
|
||||||
return cached_code_page.inst[(vaddr & Core::Memory::YUZU_PAGEMASK) / sizeof(u32)];
|
// }
|
||||||
|
// return cached_code_page.inst[(vaddr & Core::Memory::YUZU_PAGEMASK) / sizeof(u32)];
|
||||||
}
|
}
|
||||||
|
|
||||||
void DynarmicCallbacks32::MemoryWrite8(u32 vaddr, u8 value) {
|
void DynarmicCallbacks32::MemoryWrite8(u32 vaddr, u8 value) {
|
||||||
|
|
|
||||||
|
|
@ -45,13 +45,13 @@ Dynarmic::A64::Vector DynarmicCallbacks64::MemoryRead128(u64 vaddr) {
|
||||||
std::optional<u32> DynarmicCallbacks64::MemoryReadCode(u64 vaddr) {
|
std::optional<u32> DynarmicCallbacks64::MemoryReadCode(u64 vaddr) {
|
||||||
if (!m_memory.IsValidVirtualAddressRange(vaddr, sizeof(u32)))
|
if (!m_memory.IsValidVirtualAddressRange(vaddr, sizeof(u32)))
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
// return m_memory.Read32(vaddr);
|
return m_memory.Read32(vaddr);
|
||||||
auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
|
// auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
|
||||||
if (last_code_addr != aligned_vaddr) {
|
// if (last_code_addr != aligned_vaddr) {
|
||||||
m_memory.ReadBlock(aligned_vaddr, &cached_code_page, sizeof(cached_code_page));
|
// m_memory.ReadBlock(aligned_vaddr, &cached_code_page, sizeof(cached_code_page));
|
||||||
last_code_addr = aligned_vaddr;
|
// last_code_addr = aligned_vaddr;
|
||||||
}
|
// }
|
||||||
return cached_code_page.inst[(vaddr & Core::Memory::YUZU_PAGEMASK) / sizeof(u32)];
|
// return cached_code_page.inst[(vaddr & Core::Memory::YUZU_PAGEMASK) / sizeof(u32)];
|
||||||
}
|
}
|
||||||
|
|
||||||
void DynarmicCallbacks64::MemoryWrite8(u64 vaddr, u8 value) {
|
void DynarmicCallbacks64::MemoryWrite8(u64 vaddr, u8 value) {
|
||||||
|
|
|
||||||
|
|
@ -47,15 +47,15 @@ public:
|
||||||
: memory{memory_}, local_memory{local_memory_},
|
: memory{memory_}, local_memory{local_memory_},
|
||||||
mapped_ranges{mapped_ranges_}, parent{parent_} {}
|
mapped_ranges{mapped_ranges_}, parent{parent_} {}
|
||||||
|
|
||||||
std::optional<std::uint32_t> MemoryReadCode(VAddr vaddr) override {
|
// std::optional<std::uint32_t> MemoryReadCode(VAddr vaddr) override {
|
||||||
static_assert(Core::Memory::YUZU_PAGESIZE == Dynarmic::CODE_PAGE_SIZE);
|
// static_assert(Core::Memory::YUZU_PAGESIZE == Dynarmic::CODE_PAGE_SIZE);
|
||||||
auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
|
// auto const aligned_vaddr = vaddr & ~Core::Memory::YUZU_PAGEMASK;
|
||||||
if (last_code_addr != aligned_vaddr) {
|
// if (last_code_addr != aligned_vaddr) {
|
||||||
cached_code_page = ReadMemory<Dynarmic::CodePage>(aligned_vaddr);
|
// cached_code_page = ReadMemory<Dynarmic::CodePage>(aligned_vaddr);
|
||||||
last_code_addr = aligned_vaddr;
|
// last_code_addr = aligned_vaddr;
|
||||||
}
|
// }
|
||||||
return cached_code_page.inst[(vaddr & Core::Memory::YUZU_PAGEMASK) / sizeof(u32)];
|
// return cached_code_page.inst[(vaddr & Core::Memory::YUZU_PAGEMASK) / sizeof(u32)];
|
||||||
}
|
// }
|
||||||
u8 MemoryRead8(u64 vaddr) override {
|
u8 MemoryRead8(u64 vaddr) override {
|
||||||
return ReadMemory<u8>(vaddr);
|
return ReadMemory<u8>(vaddr);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue