summaryrefslogtreecommitdiff
path: root/src/core/arm
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/arm')
-rw-r--r--src/core/arm/nce/arm_nce.cpp5
-rw-r--r--src/core/arm/nce/patch.cpp5
-rw-r--r--src/core/arm/nce/patch.h16
3 files changed, 9 insertions, 17 deletions
diff --git a/src/core/arm/nce/arm_nce.cpp b/src/core/arm/nce/arm_nce.cpp
index 511248a0d..fd82f3b0e 100644
--- a/src/core/arm/nce/arm_nce.cpp
+++ b/src/core/arm/nce/arm_nce.cpp
@@ -4,7 +4,6 @@
4#include <cinttypes> 4#include <cinttypes>
5#include <memory> 5#include <memory>
6 6
7#include "common/scope_exit.h"
8#include "common/signal_chain.h" 7#include "common/signal_chain.h"
9#include "core/arm/nce/arm_nce.h" 8#include "core/arm/nce/arm_nce.h"
10#include "core/arm/nce/patch.h" 9#include "core/arm/nce/patch.h"
@@ -32,7 +31,7 @@ static_assert(offsetof(NativeExecutionParameters, magic) == TpidrEl0TlsMagic);
32fpsimd_context* GetFloatingPointState(mcontext_t& host_ctx) { 31fpsimd_context* GetFloatingPointState(mcontext_t& host_ctx) {
33 _aarch64_ctx* header = reinterpret_cast<_aarch64_ctx*>(&host_ctx.__reserved); 32 _aarch64_ctx* header = reinterpret_cast<_aarch64_ctx*>(&host_ctx.__reserved);
34 while (header->magic != FPSIMD_MAGIC) { 33 while (header->magic != FPSIMD_MAGIC) {
35 header = reinterpret_cast<_aarch64_ctx*>((char*)header + header->size); 34 header = reinterpret_cast<_aarch64_ctx*>(reinterpret_cast<char*>(header) + header->size);
36 } 35 }
37 return reinterpret_cast<fpsimd_context*>(header); 36 return reinterpret_cast<fpsimd_context*>(header);
38} 37}
@@ -124,7 +123,7 @@ bool ARM_NCE::HandleGuestFault(GuestContext* guest_ctx, void* raw_info, void* ra
124 123
125 // Forcibly mark the context as locked. We are still running. 124 // Forcibly mark the context as locked. We are still running.
126 // We may race with SignalInterrupt here: 125 // We may race with SignalInterrupt here:
127 // - If we lose the race, then SignalInterrupt will send us a signal which are masking, 126 // - If we lose the race, then SignalInterrupt will send us a signal we are masking,
128 // and it will do nothing when it is unmasked, as we have already left guest code. 127 // and it will do nothing when it is unmasked, as we have already left guest code.
129 // - If we win the race, then SignalInterrupt will wait for us to unlock first. 128 // - If we win the race, then SignalInterrupt will wait for us to unlock first.
130 auto& thread_params = guest_ctx->parent->running_thread->GetNativeExecutionParameters(); 129 auto& thread_params = guest_ctx->parent->running_thread->GetNativeExecutionParameters();
diff --git a/src/core/arm/nce/patch.cpp b/src/core/arm/nce/patch.cpp
index c79399c2b..bc4b73634 100644
--- a/src/core/arm/nce/patch.cpp
+++ b/src/core/arm/nce/patch.cpp
@@ -100,7 +100,7 @@ void Patcher::RelocateAndCopy(Common::ProcessAddress load_base,
100 const Kernel::CodeSet::Segment& code, 100 const Kernel::CodeSet::Segment& code,
101 Kernel::PhysicalMemory& program_image, 101 Kernel::PhysicalMemory& program_image,
102 EntryTrampolines* out_trampolines) { 102 EntryTrampolines* out_trampolines) {
103 const size_t patch_size = SectionSize(); 103 const size_t patch_size = GetSectionSize();
104 const size_t image_size = program_image.size(); 104 const size_t image_size = program_image.size();
105 105
106 // Retrieve text segment data. 106 // Retrieve text segment data.
@@ -180,7 +180,7 @@ void Patcher::RelocateAndCopy(Common::ProcessAddress load_base,
180 } 180 }
181} 181}
182 182
183size_t Patcher::SectionSize() const noexcept { 183size_t Patcher::GetSectionSize() const noexcept {
184 return Common::AlignUp(m_patch_instructions.size() * sizeof(u32), Core::Memory::YUZU_PAGESIZE); 184 return Common::AlignUp(m_patch_instructions.size() * sizeof(u32), Core::Memory::YUZU_PAGESIZE);
185} 185}
186 186
@@ -256,7 +256,6 @@ void Patcher::WriteSaveContext() {
256} 256}
257 257
258void Patcher::WriteSvcTrampoline(ModuleDestLabel module_dest, u32 svc_id) { 258void Patcher::WriteSvcTrampoline(ModuleDestLabel module_dest, u32 svc_id) {
259 LOG_ERROR(Core_ARM, "Patching SVC {:#x} at {:#x}", svc_id, module_dest - 4);
260 // We are about to start saving state, so we need to lock the context. 259 // We are about to start saving state, so we need to lock the context.
261 this->LockContext(); 260 this->LockContext();
262 261
diff --git a/src/core/arm/nce/patch.h b/src/core/arm/nce/patch.h
index b727d4e48..dcce1bfc6 100644
--- a/src/core/arm/nce/patch.h
+++ b/src/core/arm/nce/patch.h
@@ -7,23 +7,17 @@
7#include <unordered_map> 7#include <unordered_map>
8#include <vector> 8#include <vector>
9 9
10#pragma clang diagnostic push 10#pragma GCC diagnostic push
11#pragma clang diagnostic ignored "-Wshorten-64-to-32" 11#pragma GCC diagnostic ignored "-Wshorten-64-to-32"
12#include <oaknut/code_block.hpp> 12#include <oaknut/code_block.hpp>
13#include <oaknut/oaknut.hpp> 13#include <oaknut/oaknut.hpp>
14#pragma clang diagnostic pop 14#pragma GCC diagnostic pop
15 15
16#include "common/common_types.h" 16#include "common/common_types.h"
17#include "core/hle/kernel/code_set.h" 17#include "core/hle/kernel/code_set.h"
18#include "core/hle/kernel/k_typed_address.h" 18#include "core/hle/kernel/k_typed_address.h"
19#include "core/hle/kernel/physical_memory.h" 19#include "core/hle/kernel/physical_memory.h"
20 20
21#include <signal.h>
22
23namespace Core {
24struct GuestContext;
25}
26
27namespace Core::NCE { 21namespace Core::NCE {
28 22
29enum class PatchMode : u32 { 23enum class PatchMode : u32 {
@@ -45,9 +39,9 @@ public:
45 const Kernel::CodeSet::Segment& code); 39 const Kernel::CodeSet::Segment& code);
46 void RelocateAndCopy(Common::ProcessAddress load_base, const Kernel::CodeSet::Segment& code, 40 void RelocateAndCopy(Common::ProcessAddress load_base, const Kernel::CodeSet::Segment& code,
47 Kernel::PhysicalMemory& program_image, EntryTrampolines* out_trampolines); 41 Kernel::PhysicalMemory& program_image, EntryTrampolines* out_trampolines);
48 size_t SectionSize() const noexcept; 42 size_t GetSectionSize() const noexcept;
49 43
50 [[nodiscard]] PatchMode Mode() const noexcept { 44 [[nodiscard]] PatchMode GetPatchMode() const noexcept {
51 return mode; 45 return mode;
52 } 46 }
53 47