From c083ea7d7846ee40cfc889ed1d415f73ec78364c Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 1 Mar 2020 23:46:10 -0500 Subject: core: Implement separate A32/A64 ARM interfaces. --- src/core/arm/dynarmic/arm_dynarmic.h | 96 ------------------------------------ 1 file changed, 96 deletions(-) delete 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 deleted file mode 100644 index ffbb69d76..000000000 --- a/src/core/arm/dynarmic/arm_dynarmic.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2018 yuzu emulator team -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include -#include - -#include -#include -#include "common/common_types.h" -#include "common/hash.h" -#include "core/arm/arm_interface.h" -#include "core/arm/exclusive_monitor.h" -#include "core/arm/unicorn/arm_unicorn.h" - -namespace Memory { -class Memory; -} - -namespace Core { - -class ARM_Dynarmic_Callbacks; -class DynarmicExclusiveMonitor; -class System; - -using JitCacheKey = std::pair; -using JitCacheType = - std::unordered_map, Common::PairHash>; - -class ARM_Dynarmic final : public ARM_Interface { -public: - ARM_Dynarmic(System& system, ExclusiveMonitor& exclusive_monitor, std::size_t core_index); - ~ARM_Dynarmic() override; - - void SetPC(u64 pc) override; - u64 GetPC() const override; - u64 GetReg(int index) const override; - void SetReg(int index, u64 value) override; - u128 GetVectorReg(int index) const override; - void SetVectorReg(int index, u128 value) override; - u32 GetPSTATE() const override; - void SetPSTATE(u32 pstate) override; - void Run() override; - void Step() override; - VAddr GetTlsAddress() const override; - void SetTlsAddress(VAddr address) override; - void SetTPIDR_EL0(u64 value) override; - u64 GetTPIDR_EL0() const override; - - void SaveContext(ThreadContext& ctx) override; - void LoadContext(const ThreadContext& ctx) override; - - void PrepareReschedule() override; - void ClearExclusiveState() override; - - void ClearInstructionCache() override; - void PageTableChanged(Common::PageTable& new_page_table, - std::size_t new_address_space_size_in_bits) override; - -private: - std::shared_ptr MakeJit(Common::PageTable& page_table, - std::size_t address_space_bits) const; - - friend class ARM_Dynarmic_Callbacks; - std::unique_ptr cb; - JitCacheType jit_cache; - std::shared_ptr jit; - ARM_Unicorn inner_unicorn; - - std::size_t core_index; - DynarmicExclusiveMonitor& exclusive_monitor; -}; - -class DynarmicExclusiveMonitor final : public ExclusiveMonitor { -public: - explicit DynarmicExclusiveMonitor(Memory::Memory& memory_, std::size_t core_count); - ~DynarmicExclusiveMonitor() override; - - void SetExclusive(std::size_t core_index, VAddr addr) override; - void ClearExclusive() override; - - bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) override; - bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) override; - bool ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) override; - bool ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) override; - bool ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) override; - -private: - friend class ARM_Dynarmic; - Dynarmic::A64::ExclusiveMonitor monitor; - Memory::Memory& memory; -}; - -} // namespace Core -- cgit v1.2.3