summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2021-08-09 01:19:22 +0200
committerAdmiral H. Curtiss <pikachu025@gmail.com>2021-08-09 18:25:35 +0200
commit116d1361d53d3d3174df2e093ace2d74a488d874 (patch)
tree00e5e636d58717e5c11c198b0047db576216685c /Source/Core
parent95fbd096912c0a0be02e7c7eb728009add2de8a1 (diff)
PowerPC: Let callers of JitCache_TranslateAddress determine whether the address was translated.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/MMU.cpp12
-rw-r--r--Source/Core/Core/PowerPC/MMU.h14
2 files changed, 16 insertions, 10 deletions
diff --git a/Source/Core/Core/PowerPC/MMU.cpp b/Source/Core/Core/PowerPC/MMU.cpp
index 6419e94729..ab9edf71a7 100644
--- a/Source/Core/Core/PowerPC/MMU.cpp
+++ b/Source/Core/Core/PowerPC/MMU.cpp
@@ -1097,17 +1097,15 @@ bool IsOptimizableGatherPipeWrite(u32 address)
TranslateResult JitCache_TranslateAddress(u32 address)
{
if (!MSR.IR)
- return TranslateResult{true, true, address};
+ return TranslateResult{address};
// TODO: We shouldn't use FLAG_OPCODE if the caller is the debugger.
- auto tlb_addr = TranslateAddress<XCheckTLBFlag::Opcode>(address);
+ const auto tlb_addr = TranslateAddress<XCheckTLBFlag::Opcode>(address);
if (!tlb_addr.Success())
- {
- return TranslateResult{false, false, 0};
- }
+ return TranslateResult{};
- bool from_bat = tlb_addr.result == TranslateAddressResultEnum::BAT_TRANSLATED;
- return TranslateResult{true, from_bat, tlb_addr.address};
+ const bool from_bat = tlb_addr.result == TranslateAddressResultEnum::BAT_TRANSLATED;
+ return TranslateResult{from_bat, tlb_addr.address};
}
// *********************************************************************************
diff --git a/Source/Core/Core/PowerPC/MMU.h b/Source/Core/Core/PowerPC/MMU.h
index 9e2a3a0196..ab02ad01d8 100644
--- a/Source/Core/Core/PowerPC/MMU.h
+++ b/Source/Core/Core/PowerPC/MMU.h
@@ -189,9 +189,17 @@ bool IsOptimizableGatherPipeWrite(u32 address);
struct TranslateResult
{
- bool valid;
- bool from_bat;
- u32 address;
+ bool valid = false;
+ bool translated = false;
+ bool from_bat = false;
+ u32 address = 0;
+
+ TranslateResult() = default;
+ explicit TranslateResult(u32 address_) : valid(true), address(address_) {}
+ TranslateResult(bool from_bat_, u32 address_)
+ : valid(true), translated(true), from_bat(from_bat_), address(address_)
+ {
+ }
};
TranslateResult JitCache_TranslateAddress(u32 address);