summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMat M <mathew1800@gmail.com>2020-04-20 20:19:18 +0200
committerGitHub <noreply@github.com>2020-04-20 20:19:18 +0200
commit200f69d2ffa11bb902c2d9cabb49027f4781fe11 (patch)
tree028ddae62e98d6498ecd9363f020717cf22b05ea /src/core
parentMerge pull request #3741 from FearlessTobi/silence-warnings (diff)
parentdynarmic: Add option to disable CPU JIT optimizations (diff)
downloadyuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.tar
yuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.tar.gz
yuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.tar.bz2
yuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.tar.lz
yuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.tar.xz
yuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.tar.zst
yuzu-200f69d2ffa11bb902c2d9cabb49027f4781fe11.zip
Diffstat (limited to '')
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.cpp10
-rw-r--r--src/core/settings.h1
2 files changed, 9 insertions, 2 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
index 9add5d363..65cbfe5e6 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
@@ -20,6 +20,7 @@
#include "core/hle/kernel/scheduler.h"
#include "core/hle/kernel/svc.h"
#include "core/memory.h"
+#include "core/settings.h"
namespace Core {
@@ -144,6 +145,8 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable&
config.page_table_address_space_bits = address_space_bits;
config.silently_mirror_page_table = false;
config.absolute_offset_page_table = true;
+ config.detect_misaligned_access_via_page_table = 16 | 32 | 64 | 128;
+ config.only_detect_misalignment_via_page_table_on_page_boundary = true;
// Multi-process state
config.processor_id = core_index;
@@ -159,8 +162,11 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable&
// Unpredictable instructions
config.define_unpredictable_behaviour = true;
- config.detect_misaligned_access_via_page_table = 16 | 32 | 64 | 128;
- config.only_detect_misalignment_via_page_table_on_page_boundary = true;
+ // Optimizations
+ if (Settings::values.disable_cpu_opt) {
+ config.enable_optimizations = false;
+ config.enable_fast_dispatch = false;
+ }
return std::make_shared<Dynarmic::A64::Jit>(config);
}
diff --git a/src/core/settings.h b/src/core/settings.h
index 79ec01731..c73d1c596 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -464,6 +464,7 @@ struct Values {
bool dump_nso;
bool reporting_services;
bool quest_flag;
+ bool disable_cpu_opt;
// BCAT
std::string bcat_backend;