From 17a8cae0038b82202149bad687823b89074aa696 Mon Sep 17 00:00:00 2001 From: Yuri Kunde Schlesner Date: Sat, 9 May 2015 04:02:32 -0300 Subject: Memory: Add GetPhysicalPointer helper function --- src/core/hw/gpu.cpp | 10 +++++----- src/core/mem_map.h | 9 +++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'src/core') diff --git a/src/core/hw/gpu.cpp b/src/core/hw/gpu.cpp index 0ad7e296..e4a0e14c 100644 --- a/src/core/hw/gpu.cpp +++ b/src/core/hw/gpu.cpp @@ -76,8 +76,8 @@ inline void Write(u32 addr, const T data) { auto& config = g_regs.memory_fill_config[is_second_filler]; if (config.address_start && config.trigger) { - u8* start = Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetStartAddress())); - u8* end = Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetEndAddress())); + u8* start = Memory::GetPhysicalPointer(config.GetStartAddress()); + u8* end = Memory::GetPhysicalPointer(config.GetEndAddress()); if (config.fill_24bit) { // fill with 24-bit values @@ -114,8 +114,8 @@ inline void Write(u32 addr, const T data) { { const auto& config = g_regs.display_transfer_config; if (config.trigger & 1) { - u8* src_pointer = Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalInputAddress())); - u8* dst_pointer = Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalOutputAddress())); + u8* src_pointer = Memory::GetPhysicalPointer(config.GetPhysicalInputAddress()); + u8* dst_pointer = Memory::GetPhysicalPointer(config.GetPhysicalOutputAddress()); if (config.scaling > config.ScaleXY) { LOG_CRITICAL(HW_GPU, "Unimplemented display transfer scaling mode %u", config.scaling.Value()); @@ -257,7 +257,7 @@ inline void Write(u32 addr, const T data) { const auto& config = g_regs.command_processor_config; if (config.trigger & 1) { - u32* buffer = (u32*)Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalAddress())); + u32* buffer = (u32*)Memory::GetPhysicalPointer(config.GetPhysicalAddress()); Pica::CommandProcessor::ProcessCommandList(buffer, config.size); } break; diff --git a/src/core/mem_map.h b/src/core/mem_map.h index 5a08cc10..64de76c3 100644 --- a/src/core/mem_map.h +++ b/src/core/mem_map.h @@ -192,4 +192,13 @@ PAddr VirtualToPhysicalAddress(VAddr addr); */ VAddr PhysicalToVirtualAddress(PAddr addr); +/** + * Gets a pointer to the memory region beginning at the specified physical address. + * + * @note This is currently implemented using PhysicalToVirtualAddress(). + */ +inline u8* GetPhysicalPointer(PAddr address) { + return GetPointer(PhysicalToVirtualAddress(address)); +} + } // namespace -- cgit v1.2.3