[nce] fix macos

Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie 2025-09-03 18:37:45 +00:00 committed by crueter
parent df6fa8b9e5
commit a2a77982da
Signed by untrusted user: crueter
GPG key ID: 425ACD2D4830EBC6
6 changed files with 15 additions and 16 deletions

View file

@ -375,8 +375,7 @@ elseif (APPLE)
"${MACH_EXC_DEFS_DIR}/mach/mach_exc.defs" "${MACH_EXC_DEFS_DIR}/mach/mach_exc.defs"
) )
target_sources(dynarmic PRIVATE target_sources(dynarmic PRIVATE
backend/exception_handler_macos.cpp backend/exception_handler_posix.cpp
backend/exception_handler_macos_mig.c
) )
endif() endif()
elseif (UNIX) elseif (UNIX)

View file

@ -17,7 +17,7 @@ ExceptionHandler::~ExceptionHandler() = default;
void ExceptionHandler::Register(X64::BlockOfCode&) { void ExceptionHandler::Register(X64::BlockOfCode&) {
// Do nothing // Do nothing
} }
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
void ExceptionHandler::Register(oaknut::CodeBlock&, std::size_t) { void ExceptionHandler::Register(oaknut::CodeBlock&, std::size_t) {
// Do nothing // Do nothing
} }

View file

@ -25,7 +25,7 @@
#include "dynarmic/backend/exception_handler.h" #include "dynarmic/backend/exception_handler.h"
#if defined(MCL_ARCHITECTURE_X86_64) #if defined(ARCHITECTURE_x86_64)
# include "dynarmic/backend/x64/block_of_code.h" # include "dynarmic/backend/x64/block_of_code.h"
# define mig_external extern "C" # define mig_external extern "C"
@ -36,7 +36,7 @@
using dynarmic_thread_state_t = x86_thread_state64_t; using dynarmic_thread_state_t = x86_thread_state64_t;
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
# include <oaknut/code_block.hpp> # include <oaknut/code_block.hpp>
# define mig_external extern "C" # define mig_external extern "C"
@ -133,7 +133,7 @@ void MachHandler::MessagePump() {
} }
} }
#if defined(MCL_ARCHITECTURE_X86_64) #if defined(ARCHITECTURE_x86_64)
kern_return_t MachHandler::HandleRequest(x86_thread_state64_t* ts) { kern_return_t MachHandler::HandleRequest(x86_thread_state64_t* ts) {
std::lock_guard<std::mutex> guard(code_block_infos_mutex); std::lock_guard<std::mutex> guard(code_block_infos_mutex);
@ -151,7 +151,7 @@ kern_return_t MachHandler::HandleRequest(x86_thread_state64_t* ts) {
return KERN_SUCCESS; return KERN_SUCCESS;
} }
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
kern_return_t MachHandler::HandleRequest(arm_thread_state64_t* ts) { kern_return_t MachHandler::HandleRequest(arm_thread_state64_t* ts) {
std::lock_guard<std::mutex> guard(code_block_infos_mutex); std::lock_guard<std::mutex> guard(code_block_infos_mutex);
@ -269,13 +269,13 @@ private:
ExceptionHandler::ExceptionHandler() = default; ExceptionHandler::ExceptionHandler() = default;
ExceptionHandler::~ExceptionHandler() = default; ExceptionHandler::~ExceptionHandler() = default;
#if defined(MCL_ARCHITECTURE_X86_64) #if defined(ARCHITECTURE_x86_64)
void ExceptionHandler::Register(X64::BlockOfCode& code) { void ExceptionHandler::Register(X64::BlockOfCode& code) {
const u64 code_begin = mcl::bit_cast<u64>(code.getCode()); const u64 code_begin = mcl::bit_cast<u64>(code.getCode());
const u64 code_end = code_begin + code.GetTotalCodeSize(); const u64 code_end = code_begin + code.GetTotalCodeSize();
impl = std::make_unique<Impl>(code_begin, code_end); impl = std::make_unique<Impl>(code_begin, code_end);
} }
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
void ExceptionHandler::Register(oaknut::CodeBlock& mem, std::size_t size) { void ExceptionHandler::Register(oaknut::CodeBlock& mem, std::size_t size) {
const u64 code_begin = mcl::bit_cast<u64>(mem.ptr()); const u64 code_begin = mcl::bit_cast<u64>(mem.ptr());
const u64 code_end = code_begin + size; const u64 code_end = code_begin + size;

View file

@ -5,9 +5,9 @@
#include <mcl/macro/architecture.hpp> #include <mcl/macro/architecture.hpp>
#if defined(MCL_ARCHITECTURE_X86_64) #if defined(ARCHITECTURE_x86_64)
# include "dynarmic/backend/x64/mig/mach_exc_server.c" # include "dynarmic/backend/x64/mig/mach_exc_server.c"
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
# include "dynarmic/backend/arm64/mig/mach_exc_server.c" # include "dynarmic/backend/arm64/mig/mach_exc_server.c"
#else #else
# error "Invalid architecture" # error "Invalid architecture"

View file

@ -20,9 +20,9 @@
#include <mcl/bit_cast.hpp> #include <mcl/bit_cast.hpp>
#include "dynarmic/common/common_types.h" #include "dynarmic/common/common_types.h"
#if defined(MCL_ARCHITECTURE_X86_64) #if defined(ARCHITECTURE_x86_64)
# include "dynarmic/backend/x64/block_of_code.h" # include "dynarmic/backend/x64/block_of_code.h"
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
# include <oaknut/code_block.hpp> # include <oaknut/code_block.hpp>
# include "dynarmic/backend/arm64/abi.h" # include "dynarmic/backend/arm64/abi.h"
@ -210,13 +210,13 @@ private:
ExceptionHandler::ExceptionHandler() = default; ExceptionHandler::ExceptionHandler() = default;
ExceptionHandler::~ExceptionHandler() = default; ExceptionHandler::~ExceptionHandler() = default;
#if defined(MCL_ARCHITECTURE_X86_64) #if defined(ARCHITECTURE_x86_64)
void ExceptionHandler::Register(X64::BlockOfCode& code) { void ExceptionHandler::Register(X64::BlockOfCode& code) {
const u64 code_begin = mcl::bit_cast<u64>(code.getCode()); const u64 code_begin = mcl::bit_cast<u64>(code.getCode());
const u64 code_end = code_begin + code.GetTotalCodeSize(); const u64 code_end = code_begin + code.GetTotalCodeSize();
impl = std::make_unique<Impl>(code_begin, code_end); impl = std::make_unique<Impl>(code_begin, code_end);
} }
#elif defined(MCL_ARCHITECTURE_ARM64) #elif defined(ARCHITECTURE_arm64)
void ExceptionHandler::Register(oaknut::CodeBlock& mem, std::size_t size) { void ExceptionHandler::Register(oaknut::CodeBlock& mem, std::size_t size) {
const u64 code_begin = mcl::bit_cast<u64>(mem.ptr()); const u64 code_begin = mcl::bit_cast<u64>(mem.ptr());
const u64 code_end = code_begin + size; const u64 code_end = code_begin + size;

View file

@ -15,7 +15,7 @@
# include <sys/regset.h> # include <sys/regset.h>
# endif # endif
# ifdef __linux__ # ifdef __linux__
# include <sigcontext.h> # include <sys/syscall.h>
# endif # endif
#endif #endif