summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar MerryMage2020-04-20 13:34:29 +0100
committerGravatar MerryMage2020-04-20 13:36:26 +0100
commita3a12deecca6c2c9d980d76c44f54f27a78513b4 (patch)
tree993f56fb1fd682a310ee59b699a04a21925f73f0 /src/core
parentMerge pull request #3686 from lioncash/table (diff)
downloadyuzu-a3a12deecca6c2c9d980d76c44f54f27a78513b4.tar.gz
yuzu-a3a12deecca6c2c9d980d76c44f54f27a78513b4.tar.xz
yuzu-a3a12deecca6c2c9d980d76c44f54f27a78513b4.zip
dynarmic: Add option to disable CPU JIT optimizations
Diffstat (limited to 'src/core')
-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 @@
20#include "core/hle/kernel/scheduler.h" 20#include "core/hle/kernel/scheduler.h"
21#include "core/hle/kernel/svc.h" 21#include "core/hle/kernel/svc.h"
22#include "core/memory.h" 22#include "core/memory.h"
23#include "core/settings.h"
23 24
24namespace Core { 25namespace Core {
25 26
@@ -144,6 +145,8 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable&
144 config.page_table_address_space_bits = address_space_bits; 145 config.page_table_address_space_bits = address_space_bits;
145 config.silently_mirror_page_table = false; 146 config.silently_mirror_page_table = false;
146 config.absolute_offset_page_table = true; 147 config.absolute_offset_page_table = true;
148 config.detect_misaligned_access_via_page_table = 16 | 32 | 64 | 128;
149 config.only_detect_misalignment_via_page_table_on_page_boundary = true;
147 150
148 // Multi-process state 151 // Multi-process state
149 config.processor_id = core_index; 152 config.processor_id = core_index;
@@ -159,8 +162,11 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable&
159 // Unpredictable instructions 162 // Unpredictable instructions
160 config.define_unpredictable_behaviour = true; 163 config.define_unpredictable_behaviour = true;
161 164
162 config.detect_misaligned_access_via_page_table = 16 | 32 | 64 | 128; 165 // Optimizations
163 config.only_detect_misalignment_via_page_table_on_page_boundary = true; 166 if (Settings::values.disable_cpu_opt) {
167 config.enable_optimizations = false;
168 config.enable_fast_dispatch = false;
169 }
164 170
165 return std::make_shared<Dynarmic::A64::Jit>(config); 171 return std::make_shared<Dynarmic::A64::Jit>(config);
166} 172}
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 {
464 bool dump_nso; 464 bool dump_nso;
465 bool reporting_services; 465 bool reporting_services;
466 bool quest_flag; 466 bool quest_flag;
467 bool disable_cpu_opt;
467 468
468 // BCAT 469 // BCAT
469 std::string bcat_backend; 470 std::string bcat_backend;