remove assert/common types, and fix memory barrier

Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
crueter 2026-03-29 22:38:39 +00:00
parent cec23362ae
commit 3ee4e8f854
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
68 changed files with 65 additions and 141 deletions

View file

@ -59,14 +59,10 @@ CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1
#if defined(_MSC_VER) && defined(ARCHITECTURE_x86_64)
_mm_mfence();
_mm_lfence();
#elif defined(ARCHITECTURE_x86_64)
asm volatile("mfence\n\tlfence\n\t" : : : "memory");
#elif defined(_MSC_VER) && defined(ARCHITECTURE_arm64)
_Memory_barrier();
#elif defined(ARCHITECTURE_arm64)
asm volatile("dsb sy\n\t" : : : "memory");
#else
#error Unsupported architecture
__sync_synchronize();
#endif
return 0;
},
@ -78,14 +74,10 @@ CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1
[](void*, std::uint32_t, std::uint32_t) -> std::uint64_t {
#if defined(_MSC_VER) && defined(ARCHITECTURE_x86_64)
_mm_mfence();
#elif defined(ARCHITECTURE_x86_64)
asm volatile("mfence\n\t" : : : "memory");
#elif defined(_MSC_VER) && defined(ARCHITECTURE_arm64)
_Memory_barrier();
#elif defined(ARCHITECTURE_arm64)
asm volatile("dmb sy\n\t" : : : "memory");
#else
#error Unsupported architecture
__sync_synchronize();
#endif
return 0;
},

View file

@ -14,9 +14,7 @@ add_library(dynarmic STATIC
backend/exception_handler.h
common/always_false.h
common/assert.cpp
common/assert.h
common/cast_util.h
common/common_types.h
common/crypto/aes.cpp
common/crypto/aes.h
common/crypto/crc32.cpp

View file

@ -10,7 +10,7 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/a32_address_space.h"

View file

@ -10,7 +10,7 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/a64_address_space.h"

View file

@ -13,7 +13,7 @@
#include <type_traits>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include <oaknut/oaknut.hpp>
#include "dynarmic/common/always_false.h"

View file

@ -10,7 +10,7 @@
#include <algorithm>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
namespace Dynarmic {

View file

@ -12,7 +12,7 @@
#include <array>
#include <iterator>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <bit>
#include "dynarmic/common/common_types.h"

View file

@ -14,7 +14,7 @@
#include <utility>
#include <vector>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/is_instance_of_template.hpp"
#include <oaknut/oaknut.hpp>

View file

@ -19,7 +19,7 @@
#include <bit>
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/exception_handler.h"

View file

@ -17,7 +17,7 @@
#include <fmt/format.h>
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/exception_handler.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/context.h"
#include "dynarmic/common/common_types.h"
#if defined(ARCHITECTURE_x86_64)

View file

@ -8,7 +8,7 @@
#include "dynarmic/backend/riscv64/a32_address_space.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/backend/riscv64/abi.h"
#include "dynarmic/backend/riscv64/emit_riscv64.h"

View file

@ -10,7 +10,7 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/riscv64/a32_address_space.h"

View file

@ -11,7 +11,7 @@
#include <algorithm>
#include <array>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/always_false.h"

View file

@ -16,7 +16,7 @@
#include <biscuit/assembler.hpp>
#include <biscuit/registers.hpp>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/is_instance_of_template.hpp"
#include <ankerl/unordered_dense.h>

View file

@ -14,7 +14,7 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"
#include <boost/container/static_vector.hpp>

View file

@ -12,7 +12,7 @@
#include <boost/icl/interval_set.hpp>
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include <bit>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/llvm_disassemble.h"

View file

@ -8,7 +8,7 @@
#include "dynarmic/backend/x64/a32_jitstate.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -10,7 +10,7 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <boost/container/static_vector.hpp>

View file

@ -11,7 +11,7 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/llvm_disassemble.h"
#include <bit>

View file

@ -24,7 +24,7 @@
#include <array>
#include <cstring>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/backend/x64/xbyak.h"

View file

@ -10,7 +10,7 @@
#include <cstring>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/backend/x64/block_of_code.h"

View file

@ -10,7 +10,7 @@
#include <iterator>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include <boost/variant/detail/apply_visitor_binary.hpp>
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -9,7 +9,7 @@
#include <cstddef>
#include <type_traits>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/x64/block_of_code.h"

View file

@ -10,7 +10,7 @@
#include <type_traits>
#include <utility>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include "dynarmic/backend/x64/xbyak.h"

View file

@ -8,7 +8,7 @@
#include <limits>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"

View file

@ -12,7 +12,7 @@
#include <cstdlib>
#include <type_traits>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"

View file

@ -12,7 +12,7 @@
#include <type_traits>
#include <utility>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/function_info.hpp"
#include "dynarmic/mcl/integer_of_size.hpp"
#include "dynarmic/backend/x64/xbyak.h"

View file

@ -12,7 +12,7 @@
#include <cstring>
#include <vector>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include <bit>
#include "dynarmic/common/common_types.h"

View file

@ -10,7 +10,7 @@
#include <algorithm>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
namespace Dynarmic {

View file

@ -10,7 +10,7 @@
#include <bitset>
#include <xbyak/xbyak.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"

View file

@ -8,7 +8,7 @@
#pragma once
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic::Backend::X64 {

View file

@ -13,7 +13,7 @@
#include <fmt/ostream.h>
#include "dynarmic/backend/x64/hostloc.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include <bit>
#include "dynarmic/backend/x64/xbyak.h"

View file

@ -1,13 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <cstdio>
#include <exception>
[[noreturn]] void assert_terminate_impl(const char* s) {
std::puts(s);
std::fflush(stderr);
std::terminate();
}

View file

@ -1,27 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2013 Dolphin Emulator Project
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// TODO: Use source_info?
[[noreturn]] void assert_terminate_impl(const char* s);
#ifndef ASSERT
# define ASSERT(expr) do { auto&& condition = !(expr); if(condition) [[unlikely]] assert_terminate_impl(__FILE__ ": " #expr); } while(0)
#endif
#ifndef UNREACHABLE
# ifdef _MSC_VER
# define UNREACHABLE() ASSERT(false && __FILE__ ": unreachable")
# else
# define UNREACHABLE() __builtin_unreachable();
# endif
#endif
#ifndef DEBUG_ASSERT
# ifndef NDEBUG
# define DEBUG_ASSERT(_a_) ASSERT(_a_)
# else
# define DEBUG_ASSERT(_a_)
# endif
#endif

View file

@ -1,26 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// TODO(crueter): This is identical to root common_types.h
#pragma once
#include <cstdint>
#include <cstdlib>
#include <array>
using u8 = std::uint8_t; ///< 8-bit unsigned byte
using u16 = std::uint16_t; ///< 16-bit unsigned short
using u32 = std::uint32_t; ///< 32-bit unsigned word
using u64 = std::uint64_t; ///< 64-bit unsigned int
using s8 = std::int8_t; ///< 8-bit signed byte
using s16 = std::int16_t; ///< 16-bit signed short
using s32 = std::int32_t; ///< 32-bit signed word
using s64 = std::int64_t; ///< 64-bit signed int
using f32 = float; ///< 32-bit floating point
using f64 = double; ///< 64-bit floating point
using u128 = std::array<std::uint64_t, 2>;
static_assert(sizeof(u128) == 16, "u128 must be 128 bits wide");

View file

@ -10,7 +10,7 @@
#include <optional>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -10,7 +10,7 @@
#include <tuple>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -8,7 +8,7 @@
#include "dynarmic/common/fp/op/FPRoundInt.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -9,7 +9,7 @@
#include "dynarmic/common/fp/op/FPToFixed.h"
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -8,7 +8,7 @@
#include "dynarmic/common/fp/process_exception.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"

View file

@ -10,7 +10,7 @@
#include <optional>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -15,7 +15,7 @@
# include <llvm-c/Target.h>
#endif
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include <bit>
#include "dynarmic/common/common_types.h"

View file

@ -8,7 +8,7 @@
#include "dynarmic/frontend/A32/a32_ir_emitter.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/frontend/A32/a32_types.h"
#include "dynarmic/interface/A32/arch_version.h"

View file

@ -10,7 +10,7 @@
#include <string>
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/interface/A32/coprocessor_util.h"
#include "dynarmic/ir/cond.h"

View file

@ -10,7 +10,7 @@
#include <algorithm>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/A32/a32_ir_emitter.h"

View file

@ -8,7 +8,7 @@
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/interface/A32/config.h"

View file

@ -8,7 +8,7 @@
#pragma once
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/a32_ir_emitter.h"

View file

@ -8,7 +8,7 @@
#include <vector>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -8,7 +8,7 @@
#include <utility>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
#include "dynarmic/frontend/A32/a32_types.h"

View file

@ -8,7 +8,7 @@
#include <tuple>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/a32_ir_emitter.h"

View file

@ -11,7 +11,7 @@
#include <optional>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/frontend/A64/a64_location_descriptor.h"
#include "dynarmic/frontend/A64/a64_types.h"

View file

@ -11,7 +11,7 @@
#include <string>
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/ir/cond.h"

View file

@ -8,7 +8,7 @@
#include <utility>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/frontend/A64/translate/impl/impl.h"

View file

@ -12,7 +12,7 @@
#include <array>
#include <tuple>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/mcl/function_info.hpp"

View file

@ -10,7 +10,7 @@
#include <functional>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
namespace Dynarmic::Decoder {

View file

@ -8,7 +8,7 @@
#include "dynarmic/frontend/imm.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -10,7 +10,7 @@
#include <type_traits>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"

View file

@ -14,7 +14,7 @@
#include <string>
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/frontend/A32/a32_types.h"
#include "dynarmic/frontend/A64/a64_types.h"
#include "dynarmic/ir/cond.h"

View file

@ -11,7 +11,7 @@
#include <vector>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/ir/opcodes.h"

View file

@ -10,7 +10,7 @@
#include <algorithm>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/ir/opcodes.h"
#include "dynarmic/ir/type.h"

View file

@ -8,7 +8,7 @@
#include "dynarmic/ir/value.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/ir/microinstruction.h"

View file

@ -11,7 +11,7 @@
#include <array>
#include <type_traits>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/ir/type.h"

View file

@ -10,7 +10,7 @@
#include <cstddef>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/assert.h"
#include "common/assert.h"
namespace mcl {
namespace detail {

View file

@ -9,7 +9,7 @@
#include <iterator>
#include <memory>
#include <type_traits>
#include "dynarmic/common/assert.h"
#include "common/assert.h"
namespace mcl {