Merge ARM64 Dynarmic (#5620)
* Point dynarmic to citra fork, update dynarmic to AArch64 merge branch * Enable dynarmic ARM64 support
This commit is contained in:
parent
94d1f695ee
commit
94013c8e00
2
.gitmodules
vendored
2
.gitmodules
vendored
@ -12,7 +12,7 @@
|
|||||||
url = https://github.com/philsquared/Catch.git
|
url = https://github.com/philsquared/Catch.git
|
||||||
[submodule "dynarmic"]
|
[submodule "dynarmic"]
|
||||||
path = externals/dynarmic
|
path = externals/dynarmic
|
||||||
url = https://github.com/MerryMage/dynarmic.git
|
url = https://github.com/citra-emu/dynarmic.git
|
||||||
[submodule "xbyak"]
|
[submodule "xbyak"]
|
||||||
path = externals/xbyak
|
path = externals/xbyak
|
||||||
url = https://github.com/herumi/xbyak.git
|
url = https://github.com/herumi/xbyak.git
|
||||||
|
19
externals/CMakeLists.txt
vendored
19
externals/CMakeLists.txt
vendored
@ -30,11 +30,16 @@ target_include_directories(catch-single-include INTERFACE catch/single_include)
|
|||||||
# Crypto++
|
# Crypto++
|
||||||
add_subdirectory(cryptopp)
|
add_subdirectory(cryptopp)
|
||||||
|
|
||||||
# Dynarmic
|
# Xbyak
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
# Dynarmic will skip defining xbyak if it's already defined, we then define it below
|
|
||||||
add_library(xbyak INTERFACE)
|
add_library(xbyak INTERFACE)
|
||||||
option(DYNARMIC_TESTS OFF)
|
target_include_directories(xbyak SYSTEM INTERFACE ./xbyak/xbyak)
|
||||||
|
target_compile_definitions(xbyak INTERFACE XBYAK_NO_OP_NAMES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Dynarmic
|
||||||
|
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_ARM64)
|
||||||
|
set(DYNARMIC_TESTS OFF)
|
||||||
set(DYNARMIC_NO_BUNDLED_FMT ON)
|
set(DYNARMIC_NO_BUNDLED_FMT ON)
|
||||||
set(DYNARMIC_FRONTENDS "A32")
|
set(DYNARMIC_FRONTENDS "A32")
|
||||||
add_subdirectory(dynarmic)
|
add_subdirectory(dynarmic)
|
||||||
@ -74,14 +79,6 @@ target_include_directories(SoundTouch INTERFACE ./soundtouch/include)
|
|||||||
# Teakra
|
# Teakra
|
||||||
add_subdirectory(teakra EXCLUDE_FROM_ALL)
|
add_subdirectory(teakra EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
# Xbyak
|
|
||||||
if (ARCHITECTURE_x86_64)
|
|
||||||
# Defined before "dynarmic" above
|
|
||||||
# add_library(xbyak INTERFACE)
|
|
||||||
target_include_directories(xbyak INTERFACE ./xbyak/xbyak)
|
|
||||||
target_compile_definitions(xbyak INTERFACE XBYAK_NO_OP_NAMES)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Zstandard
|
# Zstandard
|
||||||
add_subdirectory(zstd/build/cmake EXCLUDE_FROM_ALL)
|
add_subdirectory(zstd/build/cmake EXCLUDE_FROM_ALL)
|
||||||
target_include_directories(libzstd_static INTERFACE ./zstd/lib)
|
target_include_directories(libzstd_static INTERFACE ./zstd/lib)
|
||||||
|
2
externals/dynarmic
vendored
2
externals/dynarmic
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 58abdcce5b23ee14e4b7c0759af16cf055c563d4
|
Subproject commit f9d84871fb6dd41c47945d649dc9017aa3762125
|
@ -487,7 +487,7 @@ if (ENABLE_WEB_SERVICE)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_ARM64)
|
||||||
target_sources(core PRIVATE
|
target_sources(core PRIVATE
|
||||||
arm/dynarmic/arm_dynarmic.cpp
|
arm/dynarmic/arm_dynarmic.cpp
|
||||||
arm/dynarmic/arm_dynarmic.h
|
arm/dynarmic/arm_dynarmic.h
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "common/texture.h"
|
#include "common/texture.h"
|
||||||
#include "core/arm/arm_interface.h"
|
#include "core/arm/arm_interface.h"
|
||||||
#ifdef ARCHITECTURE_x86_64
|
#if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_ARM64)
|
||||||
#include "core/arm/dynarmic/arm_dynarmic.h"
|
#include "core/arm/dynarmic/arm_dynarmic.h"
|
||||||
#endif
|
#endif
|
||||||
#include "core/arm/dyncom/arm_dyncom.h"
|
#include "core/arm/dyncom/arm_dyncom.h"
|
||||||
@ -365,7 +365,7 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window, u32 system_mo
|
|||||||
*memory, *timing, [this] { PrepareReschedule(); }, system_mode, num_cores, n3ds_mode);
|
*memory, *timing, [this] { PrepareReschedule(); }, system_mode, num_cores, n3ds_mode);
|
||||||
|
|
||||||
if (Settings::values.use_cpu_jit) {
|
if (Settings::values.use_cpu_jit) {
|
||||||
#ifdef ARCHITECTURE_x86_64
|
#if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_ARM64)
|
||||||
for (u32 i = 0; i < num_cores; ++i) {
|
for (u32 i = 0; i < num_cores; ++i) {
|
||||||
cpu_cores.push_back(
|
cpu_cores.push_back(
|
||||||
std::make_shared<ARM_Dynarmic>(this, *memory, i, timing->GetTimer(i)));
|
std::make_shared<ARM_Dynarmic>(this, *memory, i, timing->GetTimer(i)));
|
||||||
|
Loading…
Reference in New Issue
Block a user