From 7c21a3029143895aee5f9dfd013cab32fb12d865 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 1 Apr 2026 00:48:24 +0000 Subject: [PATCH] skip exception handler register on PS4 and use xbyak::inner:getpagesize --- src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp | 1 + src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp | 5 +++-- src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp index b3001efeae..8d9f6974aa 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp +++ b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp @@ -7,6 +7,7 @@ */ #include "dynarmic/backend/x64/block_of_code.h" +#include "xbyak/xbyak.h" #ifdef _WIN32 # define WIN32_LEAN_AND_MEAN diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp index b9df3987ca..4ed6d5cfff 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp +++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp @@ -41,9 +41,10 @@ EmitContext::EmitContext(RegAlloc& reg_alloc, IR::Block& block, boost::container EmitContext::~EmitContext() = default; -EmitX64::EmitX64(BlockOfCode& code) - : code(code) { +EmitX64::EmitX64(BlockOfCode& code) : code(code) { +#ifndef __OPENORBIS__ exception_handler.Register(code); +#endif } EmitX64::~EmitX64() = default; diff --git a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp index f1898a92ef..fc67c2974a 100644 --- a/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp +++ b/src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp @@ -13,6 +13,7 @@ #include "dynarmic/backend/x64/abi.h" #include "dynarmic/backend/x64/hostloc.h" #include "dynarmic/common/spin_lock.h" +#include "xbyak/xbyak.h" #ifdef DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT static const auto default_cg_mode = Xbyak::DontSetProtectRWE; @@ -78,7 +79,7 @@ namespace { struct SpinLockImpl { void Initialize() noexcept; static void GlobalInitialize() noexcept; - Xbyak::CodeGenerator code = Xbyak::CodeGenerator(4096, default_cg_mode); + Xbyak::CodeGenerator code = Xbyak::CodeGenerator(Xbyak::inner::getPageSize(), default_cg_mode); void (*lock)(volatile int*) = nullptr; void (*unlock)(volatile int*) = nullptr; };