From 3fa7336cce4ad8b78c3d2c81a1f79331b09eac95 Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 2 Feb 2026 12:55:01 +0000 Subject: [PATCH] immediately terminate in OO, use 2MB swap handler --- src/common/virtual_buffer.cpp | 3 +-- src/core/arm/dynarmic/arm_dynarmic_32.cpp | 4 ---- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 4 ---- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/common/virtual_buffer.cpp b/src/common/virtual_buffer.cpp index bd647b0acf..409f3efefa 100644 --- a/src/common/virtual_buffer.cpp +++ b/src/common/virtual_buffer.cpp @@ -114,7 +114,7 @@ static void SwapHandler(int sig, void* raw_context) { if (auto const it = std::ranges::find_if(swap_regions, [addr = mctx.mc_addr](auto const& e) { return uintptr_t(addr) >= uintptr_t(e.first) && uintptr_t(addr) < uintptr_t(e.first) + e.second; }); it != swap_regions.end()) { - size_t const page_size = 4096 * 8; //16K + size_t const page_size = 0x200000; //2M size_t const page_mask = ~(page_size - 1); // should replace the existing mapping... ugh void* aligned_addr = reinterpret_cast(uintptr_t(mctx.mc_addr) & page_mask); @@ -149,7 +149,6 @@ void* AllocateMemoryPages(std::size_t size) noexcept { off_t offset = 0; ASSERT(sceKernelAllocateDirectMemory(0, ORBIS_KERNEL_MAIN_DMEM_SIZE, len, align, ORBIS_KERNEL_WB_ONION, &offset) == 0); ASSERT(sceKernelMapDirectMemory(&addr, len, ORBIS_KERNEL_PROT_CPU_RW, 0, offset, len) == 0); - ASSERT(sceKernelMprotect(addr, len, VM_PROT_ALL) == 0); LOG_WARNING(HW_Memory, "Using DMem for {} bytes area @ {}", len, addr); ASSERT(addr != nullptr); } else { diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index f41a2be482..5f082e38bf 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -306,10 +306,6 @@ void ArmDynarmic32::MakeJit(Common::PageTable* page_table) { default: break; } -#ifdef __OPENORBIS__ - config.unsafe_optimizations = false; - config.optimizations = Dynarmic::no_optimizations; -#endif m_jit.emplace(config); } diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 4da2c2b211..0842f439b8 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -357,10 +357,6 @@ void ArmDynarmic64::MakeJit(Common::PageTable* page_table, std::size_t address_s default: break; } -#ifdef __OPENORBIS__ - config.unsafe_optimizations = false; - config.optimizations = Dynarmic::no_optimizations; -#endif m_jit.emplace(config); }