From 8506915208dc2d518c821f00e4286824d778642c Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 12 Jun 2023 21:34:25 -0400 Subject: core: decouple ARM interface from Dynarmic --- src/core/arm/dynarmic/arm_dynarmic.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/core/arm/dynarmic/arm_dynarmic.h (limited to 'src/core/arm/dynarmic/arm_dynarmic.h') diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h new file mode 100644 index 000000000..eef7c3116 --- /dev/null +++ b/src/core/arm/dynarmic/arm_dynarmic.h @@ -0,0 +1,29 @@ +// 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); +} + +} // namespace Core -- cgit v1.2.3