summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-08-08 03:39:54 +0200
committerLiam <byteslice@airmail.cc>2022-08-08 03:39:54 +0200
commitaae208d07fb70d01766a01c76acc41bb2bb1e2bc (patch)
tree56d77a60abfade92265cfc0cbf0ec1caf813379e /src/core
parentMerge pull request #8637 from liamwhite/bad-interrupts (diff)
downloadyuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.tar
yuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.tar.gz
yuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.tar.bz2
yuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.tar.lz
yuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.tar.xz
yuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.tar.zst
yuzu-aae208d07fb70d01766a01c76acc41bb2bb1e2bc.zip
Diffstat (limited to 'src/core')
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.cpp6
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.cpp6
2 files changed, 10 insertions, 2 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index 2e0e16b6e..1638bc41d 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -144,7 +144,7 @@ public:
u64 GetTicksRemaining() override {
if (parent.uses_wall_clock) {
- if (!parent.interrupt_handlers[parent.core_index].IsInterrupted()) {
+ if (!IsInterrupted()) {
return minimum_run_cycles;
}
return 0U;
@@ -174,6 +174,10 @@ public:
parent.jit.load()->HaltExecution(hr);
}
+ bool IsInterrupted() {
+ return parent.system.Kernel().PhysicalCore(parent.core_index).IsInterrupted();
+ }
+
ARM_Dynarmic_32& parent;
Core::Memory::Memory& memory;
std::size_t num_interpreted_instructions{};
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
index bf971b7dc..921a5a734 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
@@ -183,7 +183,7 @@ public:
u64 GetTicksRemaining() override {
if (parent.uses_wall_clock) {
- if (!parent.interrupt_handlers[parent.core_index].IsInterrupted()) {
+ if (!IsInterrupted()) {
return minimum_run_cycles;
}
return 0U;
@@ -217,6 +217,10 @@ public:
parent.jit.load()->HaltExecution(hr);
}
+ bool IsInterrupted() {
+ return parent.system.Kernel().PhysicalCore(parent.core_index).IsInterrupted();
+ }
+
ARM_Dynarmic_64& parent;
Core::Memory::Memory& memory;
u64 tpidrro_el0 = 0;