summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar MerryMage2018-01-13 22:34:15 +0000
committerGravatar MerryMage2018-01-13 22:38:57 +0000
commit668e5452fa318ba57e6d5165b6df66fd2d004a66 (patch)
treeda030e85b2d25280d16ebf24643cdbf6f3eba2d7
parentFix build on macOS and linux (diff)
downloadyuzu-668e5452fa318ba57e6d5165b6df66fd2d004a66.tar.gz
yuzu-668e5452fa318ba57e6d5165b6df66fd2d004a66.tar.xz
yuzu-668e5452fa318ba57e6d5165b6df66fd2d004a66.zip
Update dynarmic to bc73004
bc73004 a64_merge_interpret_blocks: Remove debug output 4e656ed tests/A64: Randomize PSTATE.<NZCV> fd9530b A64: Optimization: Merge interpret blocks 3c9eb04 testenv: Use format constants 324f3fc tests/A64: Unicorn interface fixes 98ecbe7 tests/A64: Fuzz against unicorn b1d38e7 tests/A64: Move TestEnvironment to own header 5218ad9 A64/data_processing_pcrel: bug: ADR{,P} instructions sign extend their immediate b1a8c39 A64/data_processing_addsub: bug: {ADD,SUB}S (extended register) instructions write to ZR when d = 31 64827fb a64_emit_x64: bug: A64CallSupervisor trampled callee-save registers 1bfa04d emit_x64: bug: OP m/r64, imm32 form instructions sign-extend their immediate on x64 edadeea A64 inferface: Use two argument static_assert 9ab1304 A64: Add ExceptionRaised IR instruction 6843eed Update readme 7438d07 A64/translate: Add TranslateSingleInstruction function
m---------externals/dynarmic0
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.cpp29
2 files changed, 17 insertions, 12 deletions
diff --git a/externals/dynarmic b/externals/dynarmic
Subproject 83afe4353cfc2276dd1dad18c9df1c4b70b7f69 Subproject bc73004dd5aaa10bedef031917bc87a5bb8f6fb
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp
index f1c15ff03..2ad48dcc7 100644
--- a/src/core/arm/dynarmic/arm_dynarmic.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic.cpp
@@ -2,6 +2,7 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <cinttypes>
5#include <memory> 6#include <memory>
6#include <dynarmic/A64/a64.h> 7#include <dynarmic/A64/a64.h>
7#include <dynarmic/A64/config.h> 8#include <dynarmic/A64/config.h>
@@ -15,33 +16,33 @@ public:
15 explicit ARM_Dynarmic_Callbacks(ARM_Dynarmic& parent) : parent(parent) {} 16 explicit ARM_Dynarmic_Callbacks(ARM_Dynarmic& parent) : parent(parent) {}
16 ~ARM_Dynarmic_Callbacks() = default; 17 ~ARM_Dynarmic_Callbacks() = default;
17 18
18 virtual u8 MemoryRead8(u64 vaddr) override { 19 u8 MemoryRead8(u64 vaddr) override {
19 return Memory::Read8(vaddr); 20 return Memory::Read8(vaddr);
20 } 21 }
21 virtual u16 MemoryRead16(u64 vaddr) override { 22 u16 MemoryRead16(u64 vaddr) override {
22 return Memory::Read16(vaddr); 23 return Memory::Read16(vaddr);
23 } 24 }
24 virtual u32 MemoryRead32(u64 vaddr) override { 25 u32 MemoryRead32(u64 vaddr) override {
25 return Memory::Read32(vaddr); 26 return Memory::Read32(vaddr);
26 } 27 }
27 virtual u64 MemoryRead64(u64 vaddr) override { 28 u64 MemoryRead64(u64 vaddr) override {
28 return Memory::Read64(vaddr); 29 return Memory::Read64(vaddr);
29 } 30 }
30 31
31 virtual void MemoryWrite8(u64 vaddr, u8 value) override { 32 void MemoryWrite8(u64 vaddr, u8 value) override {
32 Memory::Write8(vaddr, value); 33 Memory::Write8(vaddr, value);
33 } 34 }
34 virtual void MemoryWrite16(u64 vaddr, u16 value) override { 35 void MemoryWrite16(u64 vaddr, u16 value) override {
35 Memory::Write16(vaddr, value); 36 Memory::Write16(vaddr, value);
36 } 37 }
37 virtual void MemoryWrite32(u64 vaddr, u32 value) override { 38 void MemoryWrite32(u64 vaddr, u32 value) override {
38 Memory::Write32(vaddr, value); 39 Memory::Write32(vaddr, value);
39 } 40 }
40 virtual void MemoryWrite64(u64 vaddr, u64 value) override { 41 void MemoryWrite64(u64 vaddr, u64 value) override {
41 Memory::Write64(vaddr, value); 42 Memory::Write64(vaddr, value);
42 } 43 }
43 44
44 virtual void InterpreterFallback(u64 pc, size_t num_instructions) override { 45 void InterpreterFallback(u64 pc, size_t num_instructions) override {
45 ARM_Interface::ThreadContext ctx; 46 ARM_Interface::ThreadContext ctx;
46 parent.SaveContext(ctx); 47 parent.SaveContext(ctx);
47 parent.inner_unicorn.LoadContext(ctx); 48 parent.inner_unicorn.LoadContext(ctx);
@@ -51,19 +52,23 @@ public:
51 num_interpreted_instructions += num_instructions; 52 num_interpreted_instructions += num_instructions;
52 } 53 }
53 54
54 virtual void CallSVC(u32 swi) override { 55 void ExceptionRaised(u64 pc, Dynarmic::A64::Exception /*exception*/) override {
56 ASSERT_MSG(false, "ExceptionRaised(%" PRIx64 ")", pc);
57 }
58
59 void CallSVC(u32 swi) override {
55 printf("svc %x\n", swi); 60 printf("svc %x\n", swi);
56 Kernel::CallSVC(swi); 61 Kernel::CallSVC(swi);
57 } 62 }
58 63
59 virtual void AddTicks(u64 ticks) override { 64 void AddTicks(u64 ticks) override {
60 if (ticks > ticks_remaining) { 65 if (ticks > ticks_remaining) {
61 ticks_remaining = 0; 66 ticks_remaining = 0;
62 return; 67 return;
63 } 68 }
64 ticks -= ticks_remaining; 69 ticks -= ticks_remaining;
65 } 70 }
66 virtual u64 GetTicksRemaining() override { 71 u64 GetTicksRemaining() override {
67 return ticks_remaining; 72 return ticks_remaining;
68 } 73 }
69 74