mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06:00
PowerPC: Let callers of JitCache_TranslateAddress determine whether the address was translated.
This commit is contained in:
@ -1097,17 +1097,15 @@ bool IsOptimizableGatherPipeWrite(u32 address)
|
|||||||
TranslateResult JitCache_TranslateAddress(u32 address)
|
TranslateResult JitCache_TranslateAddress(u32 address)
|
||||||
{
|
{
|
||||||
if (!MSR.IR)
|
if (!MSR.IR)
|
||||||
return TranslateResult{true, true, address};
|
return TranslateResult{address};
|
||||||
|
|
||||||
// TODO: We shouldn't use FLAG_OPCODE if the caller is the debugger.
|
// 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())
|
if (!tlb_addr.Success())
|
||||||
{
|
return TranslateResult{};
|
||||||
return TranslateResult{false, false, 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
bool from_bat = tlb_addr.result == TranslateAddressResultEnum::BAT_TRANSLATED;
|
const bool from_bat = tlb_addr.result == TranslateAddressResultEnum::BAT_TRANSLATED;
|
||||||
return TranslateResult{true, from_bat, tlb_addr.address};
|
return TranslateResult{from_bat, tlb_addr.address};
|
||||||
}
|
}
|
||||||
|
|
||||||
// *********************************************************************************
|
// *********************************************************************************
|
||||||
|
@ -189,9 +189,17 @@ bool IsOptimizableGatherPipeWrite(u32 address);
|
|||||||
|
|
||||||
struct TranslateResult
|
struct TranslateResult
|
||||||
{
|
{
|
||||||
bool valid;
|
bool valid = false;
|
||||||
bool from_bat;
|
bool translated = false;
|
||||||
u32 address;
|
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);
|
TranslateResult JitCache_TranslateAddress(u32 address);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user