From d8293344006dc7e835e1cf2af77ce5bee2f0e36a Mon Sep 17 00:00:00 2001 From: lizzie Date: Sun, 13 Jul 2025 22:47:34 +0100 Subject: [PATCH 1/3] [dynarmic] fix userconfig casting warn --- externals/dynarmic/src/dynarmic/interface/A32/config.h | 6 +++--- src/core/arm/dynarmic/arm_dynarmic_32.cpp | 2 +- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/externals/dynarmic/src/dynarmic/interface/A32/config.h b/externals/dynarmic/src/dynarmic/interface/A32/config.h index 033967dc00..6e75e9b99c 100644 --- a/externals/dynarmic/src/dynarmic/interface/A32/config.h +++ b/externals/dynarmic/src/dynarmic/interface/A32/config.h @@ -159,9 +159,6 @@ struct UserConfig { /// Maximum size is limited by the maximum length of a x86_64 / arm64 jump. std::uint32_t code_cache_size = 128 * 1024 * 1024; // bytes - /// Processor ID - std::uint32_t processor_id = 0; - /// Masks out the first N bits in host pointers from the page table. /// The intention behind this is to allow users of Dynarmic to pack attributes in the /// same integer and update the pointer attribute pair atomically. @@ -172,6 +169,9 @@ struct UserConfig { /// There are minor behavioural differences between versions. ArchVersion arch_version = ArchVersion::v8; + /// Processor ID + std::uint8_t processor_id = 0; + /// Determines if we should detect memory accesses via page_table that straddle are /// misaligned. Accesses that straddle page boundaries will fallback to the relevant /// memory callback. diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index d21aa5aacf..5133dc8f71 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -201,7 +201,7 @@ std::shared_ptr ArmDynarmic32::MakeJit(Common::PageTable* pa } // Multi-process state - config.processor_id = m_core_index; + config.processor_id = std::uint8_t(m_core_index); config.global_monitor = &m_exclusive_monitor.monitor; // Timing diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index c251482182..0d05c6efd1 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -232,7 +232,7 @@ std::shared_ptr ArmDynarmic64::MakeJit(Common::PageTable* pa // Memory if (page_table) { config.page_table = reinterpret_cast(page_table->pointers.data()); - config.page_table_address_space_bits = address_space_bits; + config.page_table_address_space_bits = std::uint32_t(address_space_bits); config.page_table_pointer_mask_bits = Common::PageTable::ATTRIBUTE_BITS; config.silently_mirror_page_table = false; config.absolute_offset_page_table = true; @@ -242,7 +242,7 @@ std::shared_ptr ArmDynarmic64::MakeJit(Common::PageTable* pa config.fastmem_pointer = page_table->fastmem_arena ? std::optional{reinterpret_cast(page_table->fastmem_arena)} : std::nullopt; - config.fastmem_address_space_bits = address_space_bits; + config.fastmem_address_space_bits = std::uint32_t(address_space_bits); config.silently_mirror_fastmem = false; config.fastmem_exclusive_access = config.fastmem_pointer != std::nullopt; @@ -250,7 +250,7 @@ std::shared_ptr ArmDynarmic64::MakeJit(Common::PageTable* pa } // Multi-process state - config.processor_id = m_core_index; + config.processor_id = std::uint8_t(m_core_index); config.global_monitor = &m_exclusive_monitor.monitor; // System registers -- 2.39.5 From 1ae2ba518c5de65bb7e4b9f80c89eeb32410c65b Mon Sep 17 00:00:00 2001 From: lizzie Date: Sun, 13 Jul 2025 23:18:38 +0100 Subject: [PATCH 2/3] [dynarmic] windows fixes --- src/core/arm/dynarmic/arm_dynarmic_32.cpp | 6 +++--- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index 5133dc8f71..23aa3d79d4 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -210,9 +210,9 @@ std::shared_ptr ArmDynarmic32::MakeJit(Common::PageTable* pa // Code cache size #ifdef ARCHITECTURE_arm64 - config.code_cache_size = 128_MiB; + config.code_cache_size = std::uint32_t(128_MiB); #else - config.code_cache_size = 512_MiB; + config.code_cache_size = std::uint32_t(512_MiB); #endif // Allow memory fault handling to work @@ -223,7 +223,7 @@ std::shared_ptr ArmDynarmic32::MakeJit(Common::PageTable* pa // null_jit if (!page_table) { // Don't waste too much memory on null_jit - config.code_cache_size = 8_MiB; + config.code_cache_size = std::uint32_t(8_MiB); } // Safe optimizations diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 0d05c6efd1..1c81ee66f1 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -269,9 +269,9 @@ std::shared_ptr ArmDynarmic64::MakeJit(Common::PageTable* pa // Code cache size #ifdef ARCHITECTURE_arm64 - config.code_cache_size = 128_MiB; + config.code_cache_size = std::uint32_t(128_MiB); #else - config.code_cache_size = 512_MiB; + config.code_cache_size = std::uint32_t(512_MiB); #endif // Allow memory fault handling to work @@ -282,7 +282,7 @@ std::shared_ptr ArmDynarmic64::MakeJit(Common::PageTable* pa // null_jit if (!page_table) { // Don't waste too much memory on null_jit - config.code_cache_size = 8_MiB; + config.code_cache_size = std::uint32_t(8_MiB); } // Safe optimizations -- 2.39.5 From 028eabaeff27f7f31a9a8398ac2260fa1ded8eff Mon Sep 17 00:00:00 2001 From: crueter Date: Sun, 13 Jul 2025 18:53:41 -0400 Subject: [PATCH 3/3] Fix license headers --- externals/dynarmic/src/dynarmic/interface/A32/config.h | 3 +++ src/core/arm/dynarmic/arm_dynarmic_32.cpp | 3 +++ src/core/arm/dynarmic/arm_dynarmic_64.cpp | 3 +++ 3 files changed, 9 insertions(+) diff --git a/externals/dynarmic/src/dynarmic/interface/A32/config.h b/externals/dynarmic/src/dynarmic/interface/A32/config.h index 6e75e9b99c..11fe2236a2 100644 --- a/externals/dynarmic/src/dynarmic/interface/A32/config.h +++ b/externals/dynarmic/src/dynarmic/interface/A32/config.h @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + /* This file is part of the dynarmic project. * Copyright (c) 2016 MerryMage * SPDX-License-Identifier: 0BSD diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index 23aa3d79d4..afbf178349 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 1c81ee66f1..99a80644ad 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -- 2.39.5