diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2021-08-09 01:19:22 +0200 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2021-08-09 18:25:35 +0200 |
| commit | 116d1361d53d3d3174df2e093ace2d74a488d874 (patch) | |
| tree | 00e5e636d58717e5c11c198b0047db576216685c /Source/Core | |
| parent | 95fbd096912c0a0be02e7c7eb728009add2de8a1 (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.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/Core/PowerPC/MMU.h | 14 |
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); |
