From 45cab1400c190f84d0d8a5e8092a5625f26cba07 Mon Sep 17 00:00:00 2001 From: pineappleEA Date: Mon, 18 Jul 2022 00:57:52 +0200 Subject: [PATCH] early-access version 2844 --- README.md | 2 +- externals/dynarmic/.github/workflows/build-and-test.yml | 1 + externals/dynarmic/CMakeLists.txt | 2 +- .../dynarmic/externals/oaknut/include/oaknut/oaknut.hpp | 2 ++ externals/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp | 2 +- externals/dynarmic/src/dynarmic/backend/x64/stack_layout.h | 1 - .../dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.cpp | 2 +- externals/dynarmic/src/dynarmic/ir/opcodes.inc | 2 +- .../src/dynarmic/ir/opt/a64_callback_config_pass.cpp | 5 +++-- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 708bed504..e38ca0b37 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 2843. +This is the source code for early-access 2844. ## Legal Notice diff --git a/externals/dynarmic/.github/workflows/build-and-test.yml b/externals/dynarmic/.github/workflows/build-and-test.yml index c348694b1..d9d8f9f46 100755 --- a/externals/dynarmic/.github/workflows/build-and-test.yml +++ b/externals/dynarmic/.github/workflows/build-and-test.yml @@ -53,6 +53,7 @@ jobs: env: CC: gcc-10 CXX: g++-10 + CXXFLAGS: -Wp,-D_GLIBCXX_ASSERTIONS run: > cmake -B ${{github.workspace}}/build diff --git a/externals/dynarmic/CMakeLists.txt b/externals/dynarmic/CMakeLists.txt index 98ab4f247..04cefa4d2 100755 --- a/externals/dynarmic/CMakeLists.txt +++ b/externals/dynarmic/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project(dynarmic LANGUAGES C CXX ASM VERSION 6.2.0) +project(dynarmic LANGUAGES C CXX ASM VERSION 6.2.1) # Determine if we're built as a subproject (using add_subdirectory) # or if this is the master project. diff --git a/externals/dynarmic/externals/oaknut/include/oaknut/oaknut.hpp b/externals/dynarmic/externals/oaknut/include/oaknut/oaknut.hpp index ce0e96e7e..a273d3102 100755 --- a/externals/dynarmic/externals/oaknut/include/oaknut/oaknut.hpp +++ b/externals/dynarmic/externals/oaknut/include/oaknut/oaknut.hpp @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2022 merryhime // SPDX-License-Identifier: MIT +#pragma once + #include #include #include diff --git a/externals/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp b/externals/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp index 97472cf60..7cc4e1400 100755 --- a/externals/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp +++ b/externals/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp @@ -508,7 +508,7 @@ void A64EmitX64::EmitA64ExceptionRaised(A64EmitContext& ctx, IR::Inst* inst) { void A64EmitX64::EmitA64DataCacheOperationRaised(A64EmitContext& ctx, IR::Inst* inst) { auto args = ctx.reg_alloc.GetArgumentInfo(inst); - ctx.reg_alloc.HostCall(nullptr, {}, args[0], args[1]); + ctx.reg_alloc.HostCall(nullptr, {}, args[1], args[2]); Devirtualize<&A64::UserCallbacks::DataCacheOperationRaised>(conf.callbacks).EmitCall(code); } diff --git a/externals/dynarmic/src/dynarmic/backend/x64/stack_layout.h b/externals/dynarmic/src/dynarmic/backend/x64/stack_layout.h index 6cb1e164d..7e6799f1c 100755 --- a/externals/dynarmic/src/dynarmic/backend/x64/stack_layout.h +++ b/externals/dynarmic/src/dynarmic/backend/x64/stack_layout.h @@ -27,7 +27,6 @@ struct alignas(16) StackLayout { u32 save_host_MXCSR; bool check_bit; - bool halt_requested; }; #ifdef _MSC_VER diff --git a/externals/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.cpp b/externals/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.cpp index cc4712893..80d7e0079 100755 --- a/externals/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.cpp +++ b/externals/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.cpp @@ -55,7 +55,7 @@ void IREmitter::ExceptionRaised(Exception exception) { } void IREmitter::DataCacheOperationRaised(DataCacheOperation op, const IR::U64& value) { - Inst(Opcode::A64DataCacheOperationRaised, Imm64(static_cast(op)), value); + Inst(Opcode::A64DataCacheOperationRaised, ImmCurrentLocationDescriptor(), Imm64(static_cast(op)), value); } void IREmitter::InstructionCacheOperationRaised(InstructionCacheOperation op, const IR::U64& value) { diff --git a/externals/dynarmic/src/dynarmic/ir/opcodes.inc b/externals/dynarmic/src/dynarmic/ir/opcodes.inc index 7642d1fc7..791c29a5f 100755 --- a/externals/dynarmic/src/dynarmic/ir/opcodes.inc +++ b/externals/dynarmic/src/dynarmic/ir/opcodes.inc @@ -69,7 +69,7 @@ A64OPC(OrQC, Void, U1 A64OPC(SetPC, Void, U64 ) A64OPC(CallSupervisor, Void, U32 ) A64OPC(ExceptionRaised, Void, U64, U64 ) -A64OPC(DataCacheOperationRaised, Void, U64, U64 ) +A64OPC(DataCacheOperationRaised, Void, U64, U64, U64 ) A64OPC(InstructionCacheOperationRaised, Void, U64, U64 ) A64OPC(DataSynchronizationBarrier, Void, ) A64OPC(DataMemoryBarrier, Void, ) diff --git a/externals/dynarmic/src/dynarmic/ir/opt/a64_callback_config_pass.cpp b/externals/dynarmic/src/dynarmic/ir/opt/a64_callback_config_pass.cpp index f90370712..1e0195c4b 100755 --- a/externals/dynarmic/src/dynarmic/ir/opt/a64_callback_config_pass.cpp +++ b/externals/dynarmic/src/dynarmic/ir/opt/a64_callback_config_pass.cpp @@ -22,13 +22,14 @@ void A64CallbackConfigPass(IR::Block& block, const A64::UserConfig& conf) { continue; } - const auto op = static_cast(inst.GetArg(0).GetU64()); + const auto op = static_cast(inst.GetArg(1).GetU64()); if (op == A64::DataCacheOperation::ZeroByVA) { A64::IREmitter ir{block}; + ir.current_location = A64::LocationDescriptor{IR::LocationDescriptor{inst.GetArg(0).GetU64()}}; ir.SetInsertionPoint(&inst); size_t bytes = 4 << static_cast(conf.dczid_el0 & 0b1111); - IR::U64 addr{inst.GetArg(1)}; + IR::U64 addr{inst.GetArg(2)}; const IR::U128 zero_u128 = ir.ZeroExtendToQuad(ir.Imm64(0)); while (bytes >= 16) {