From 2ddecb9631cba32cdc1738d8fb84fdf65be970ec Mon Sep 17 00:00:00 2001
From: Merry <git@mary.rs>
Date: Sat, 1 Apr 2023 12:40:20 +0100
Subject: [PATCH 1/2] externals: Update dynarmic to 6.4.6

---
 externals/dynarmic | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/externals/dynarmic b/externals/dynarmic
index 165621a872..c08c5a9362 160000
--- a/externals/dynarmic
+++ b/externals/dynarmic
@@ -1 +1 @@
-Subproject commit 165621a872ffb802c7a26ef5900e1e62681f1a88
+Subproject commit c08c5a9362bb224dc343c2f616c24df027dfdf13

From 9c94faaa2b2532a4d383afc1b9825bd5005e5a8e Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Sat, 1 Apr 2023 17:03:08 -0700
Subject: [PATCH 2/2] core: arm_dynarmic_32: Update SaveContext/LoadContext.

---
 src/core/arm/dynarmic/arm_dynarmic_32.cpp | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index cab21a88e8..dfdcbe35ac 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -5,7 +5,6 @@
 #include <memory>
 #include <dynarmic/interface/A32/a32.h>
 #include <dynarmic/interface/A32/config.h>
-#include <dynarmic/interface/A32/context.h>
 #include "common/assert.h"
 #include "common/literals.h"
 #include "common/logging/log.h"
@@ -410,21 +409,19 @@ void ARM_Dynarmic_32::SetTPIDR_EL0(u64 value) {
 }
 
 void ARM_Dynarmic_32::SaveContext(ThreadContext32& ctx) {
-    Dynarmic::A32::Context context;
-    jit.load()->SaveContext(context);
-    ctx.cpu_registers = context.Regs();
-    ctx.extension_registers = context.ExtRegs();
-    ctx.cpsr = context.Cpsr();
-    ctx.fpscr = context.Fpscr();
+    Dynarmic::A32::Jit* j = jit.load();
+    ctx.cpu_registers = j->Regs();
+    ctx.extension_registers = j->ExtRegs();
+    ctx.cpsr = j->Cpsr();
+    ctx.fpscr = j->Fpscr();
 }
 
 void ARM_Dynarmic_32::LoadContext(const ThreadContext32& ctx) {
-    Dynarmic::A32::Context context;
-    context.Regs() = ctx.cpu_registers;
-    context.ExtRegs() = ctx.extension_registers;
-    context.SetCpsr(ctx.cpsr);
-    context.SetFpscr(ctx.fpscr);
-    jit.load()->LoadContext(context);
+    Dynarmic::A32::Jit* j = jit.load();
+    j->Regs() = ctx.cpu_registers;
+    j->ExtRegs() = ctx.extension_registers;
+    j->SetCpsr(ctx.cpsr);
+    j->SetFpscr(ctx.fpscr);
 }
 
 void ARM_Dynarmic_32::SignalInterrupt() {