mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-11-04 12:45:03 +01:00 
			
		
		
		
	core: remove remaining uses of dynamic_cast
This commit is contained in:
		
							parent
							
								
									4bee333d84
								
							
						
					
					
						commit
						05bc024260
					
				@ -346,11 +346,11 @@ void ARM_Dynarmic_32::RewindBreakpointInstruction() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ARM_Dynarmic_32::ARM_Dynarmic_32(System& system_, bool uses_wall_clock_,
 | 
			
		||||
                                 ExclusiveMonitor& exclusive_monitor_, std::size_t core_index_)
 | 
			
		||||
                                 DynarmicExclusiveMonitor& exclusive_monitor_,
 | 
			
		||||
                                 std::size_t core_index_)
 | 
			
		||||
    : ARM_Interface{system_, uses_wall_clock_}, cb(std::make_unique<DynarmicCallbacks32>(*this)),
 | 
			
		||||
      cp15(std::make_shared<DynarmicCP15>(*this)), core_index{core_index_},
 | 
			
		||||
      exclusive_monitor{dynamic_cast<DynarmicExclusiveMonitor&>(exclusive_monitor_)},
 | 
			
		||||
      null_jit{MakeJit(nullptr)}, jit{null_jit.get()} {}
 | 
			
		||||
      exclusive_monitor{exclusive_monitor_}, null_jit{MakeJit(nullptr)}, jit{null_jit.get()} {}
 | 
			
		||||
 | 
			
		||||
ARM_Dynarmic_32::~ARM_Dynarmic_32() = default;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
#include "common/hash.h"
 | 
			
		||||
#include "core/arm/arm_interface.h"
 | 
			
		||||
#include "core/arm/exclusive_monitor.h"
 | 
			
		||||
#include "core/arm/dynarmic/dynarmic_exclusive_monitor.h"
 | 
			
		||||
 | 
			
		||||
namespace Core::Memory {
 | 
			
		||||
class Memory;
 | 
			
		||||
@ -28,8 +28,8 @@ class System;
 | 
			
		||||
 | 
			
		||||
class ARM_Dynarmic_32 final : public ARM_Interface {
 | 
			
		||||
public:
 | 
			
		||||
    ARM_Dynarmic_32(System& system_, bool uses_wall_clock_, ExclusiveMonitor& exclusive_monitor_,
 | 
			
		||||
                    std::size_t core_index_);
 | 
			
		||||
    ARM_Dynarmic_32(System& system_, bool uses_wall_clock_,
 | 
			
		||||
                    DynarmicExclusiveMonitor& exclusive_monitor_, std::size_t core_index_);
 | 
			
		||||
    ~ARM_Dynarmic_32() override;
 | 
			
		||||
 | 
			
		||||
    void SetPC(u64 pc) override;
 | 
			
		||||
 | 
			
		||||
@ -405,11 +405,11 @@ void ARM_Dynarmic_64::RewindBreakpointInstruction() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ARM_Dynarmic_64::ARM_Dynarmic_64(System& system_, bool uses_wall_clock_,
 | 
			
		||||
                                 ExclusiveMonitor& exclusive_monitor_, std::size_t core_index_)
 | 
			
		||||
                                 DynarmicExclusiveMonitor& exclusive_monitor_,
 | 
			
		||||
                                 std::size_t core_index_)
 | 
			
		||||
    : ARM_Interface{system_, uses_wall_clock_},
 | 
			
		||||
      cb(std::make_unique<DynarmicCallbacks64>(*this)), core_index{core_index_},
 | 
			
		||||
      exclusive_monitor{dynamic_cast<DynarmicExclusiveMonitor&>(exclusive_monitor_)},
 | 
			
		||||
      null_jit{MakeJit(nullptr, 48)}, jit{null_jit.get()} {}
 | 
			
		||||
      exclusive_monitor{exclusive_monitor_}, null_jit{MakeJit(nullptr, 48)}, jit{null_jit.get()} {}
 | 
			
		||||
 | 
			
		||||
ARM_Dynarmic_64::~ARM_Dynarmic_64() = default;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
#include "common/hash.h"
 | 
			
		||||
#include "core/arm/arm_interface.h"
 | 
			
		||||
#include "core/arm/exclusive_monitor.h"
 | 
			
		||||
#include "core/arm/dynarmic/dynarmic_exclusive_monitor.h"
 | 
			
		||||
 | 
			
		||||
namespace Core::Memory {
 | 
			
		||||
class Memory;
 | 
			
		||||
@ -25,8 +25,8 @@ class System;
 | 
			
		||||
 | 
			
		||||
class ARM_Dynarmic_64 final : public ARM_Interface {
 | 
			
		||||
public:
 | 
			
		||||
    ARM_Dynarmic_64(System& system_, bool uses_wall_clock_, ExclusiveMonitor& exclusive_monitor_,
 | 
			
		||||
                    std::size_t core_index_);
 | 
			
		||||
    ARM_Dynarmic_64(System& system_, bool uses_wall_clock_,
 | 
			
		||||
                    DynarmicExclusiveMonitor& exclusive_monitor_, std::size_t core_index_);
 | 
			
		||||
    ~ARM_Dynarmic_64() override;
 | 
			
		||||
 | 
			
		||||
    void SetPC(u64 pc) override;
 | 
			
		||||
 | 
			
		||||
@ -6,8 +6,6 @@
 | 
			
		||||
#include <dynarmic/interface/exclusive_monitor.h>
 | 
			
		||||
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
#include "core/arm/dynarmic/arm_dynarmic_32.h"
 | 
			
		||||
#include "core/arm/dynarmic/arm_dynarmic_64.h"
 | 
			
		||||
#include "core/arm/exclusive_monitor.h"
 | 
			
		||||
 | 
			
		||||
namespace Core::Memory {
 | 
			
		||||
@ -16,6 +14,9 @@ class Memory;
 | 
			
		||||
 | 
			
		||||
namespace Core {
 | 
			
		||||
 | 
			
		||||
class ARM_Dynarmic_32;
 | 
			
		||||
class ARM_Dynarmic_64;
 | 
			
		||||
 | 
			
		||||
class DynarmicExclusiveMonitor final : public ExclusiveMonitor {
 | 
			
		||||
public:
 | 
			
		||||
    explicit DynarmicExclusiveMonitor(Memory::Memory& memory_, std::size_t core_count_);
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,9 @@ PhysicalCore::PhysicalCore(std::size_t core_index, Core::System& system, KSchedu
 | 
			
		||||
    // a 32-bit instance of Dynarmic. This should be abstracted out to a CPU manager.
 | 
			
		||||
    auto& kernel = system.Kernel();
 | 
			
		||||
    m_arm_interface = std::make_unique<Core::ARM_Dynarmic_64>(
 | 
			
		||||
        system, kernel.IsMulticore(), kernel.GetExclusiveMonitor(), m_core_index);
 | 
			
		||||
        system, kernel.IsMulticore(),
 | 
			
		||||
        reinterpret_cast<Core::DynarmicExclusiveMonitor&>(kernel.GetExclusiveMonitor()),
 | 
			
		||||
        m_core_index);
 | 
			
		||||
#else
 | 
			
		||||
#error Platform not supported yet.
 | 
			
		||||
#endif
 | 
			
		||||
@ -31,7 +33,9 @@ void PhysicalCore::Initialize(bool is_64_bit) {
 | 
			
		||||
    if (!is_64_bit) {
 | 
			
		||||
        // We already initialized a 64-bit core, replace with a 32-bit one.
 | 
			
		||||
        m_arm_interface = std::make_unique<Core::ARM_Dynarmic_32>(
 | 
			
		||||
            m_system, kernel.IsMulticore(), kernel.GetExclusiveMonitor(), m_core_index);
 | 
			
		||||
            m_system, kernel.IsMulticore(),
 | 
			
		||||
            reinterpret_cast<Core::DynarmicExclusiveMonitor&>(kernel.GetExclusiveMonitor()),
 | 
			
		||||
            m_core_index);
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
#error Platform not supported yet.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user