diff options
| author | 2020-04-20 13:34:29 +0100 | |
|---|---|---|
| committer | 2020-04-20 13:36:26 +0100 | |
| commit | a3a12deecca6c2c9d980d76c44f54f27a78513b4 (patch) | |
| tree | 993f56fb1fd682a310ee59b699a04a21925f73f0 /src/core | |
| parent | Merge pull request #3686 from lioncash/table (diff) | |
| download | yuzu-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.cpp | 10 | ||||
| -rw-r--r-- | src/core/settings.h | 1 |
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 | ||
| 24 | namespace Core { | 25 | namespace 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; |