// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include #include "core/arm/arm_interface.h" namespace Core { constexpr Dynarmic::HaltReason StepThread = Dynarmic::HaltReason::Step; constexpr Dynarmic::HaltReason DataAbort = Dynarmic::HaltReason::MemoryAbort; constexpr Dynarmic::HaltReason BreakLoop = Dynarmic::HaltReason::UserDefined2; constexpr Dynarmic::HaltReason SupervisorCall = Dynarmic::HaltReason::UserDefined3; constexpr Dynarmic::HaltReason InstructionBreakpoint = Dynarmic::HaltReason::UserDefined4; constexpr Dynarmic::HaltReason PrefetchAbort = Dynarmic::HaltReason::UserDefined6; constexpr HaltReason TranslateHaltReason(Dynarmic::HaltReason hr) { static_assert(static_cast(HaltReason::StepThread) == static_cast(StepThread)); static_assert(static_cast(HaltReason::DataAbort) == static_cast(DataAbort)); static_assert(static_cast(HaltReason::BreakLoop) == static_cast(BreakLoop)); static_assert(static_cast(HaltReason::SupervisorCall) == static_cast(SupervisorCall)); static_assert(static_cast(HaltReason::InstructionBreakpoint) == static_cast(InstructionBreakpoint)); static_assert(static_cast(HaltReason::PrefetchAbort) == static_cast(PrefetchAbort)); return static_cast(hr); } #ifdef __linux__ class ScopedJitExecution { public: explicit ScopedJitExecution(Kernel::KProcess* process); ~ScopedJitExecution(); static void RegisterHandler(); }; #else class ScopedJitExecution { public: explicit ScopedJitExecution(Kernel::KProcess* process) {} ~ScopedJitExecution() {} static void RegisterHandler() {} }; #endif } // namespace Core