summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2015-05-09 09:02:32 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2015-05-09 09:02:32 +0200
commit17a8cae0038b82202149bad687823b89074aa696 (patch)
tree02970a9b2368551c4af31e4138db1b6ded6d018c /src/core
parentMemory: Support more regions in the VAddr-PAddr translation functions (diff)
downloadyuzu-17a8cae0038b82202149bad687823b89074aa696.tar
yuzu-17a8cae0038b82202149bad687823b89074aa696.tar.gz
yuzu-17a8cae0038b82202149bad687823b89074aa696.tar.bz2
yuzu-17a8cae0038b82202149bad687823b89074aa696.tar.lz
yuzu-17a8cae0038b82202149bad687823b89074aa696.tar.xz
yuzu-17a8cae0038b82202149bad687823b89074aa696.tar.zst
yuzu-17a8cae0038b82202149bad687823b89074aa696.zip
Diffstat (limited to 'src/core')
-rw-r--r--src/core/hw/gpu.cpp10
-rw-r--r--src/core/mem_map.h9
2 files changed, 14 insertions, 5 deletions
diff --git a/src/core/hw/gpu.cpp b/src/core/hw/gpu.cpp
index 0ad7e2963..e4a0e14c4 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 5a08cc105..64de76c39 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