diff options
author | Liam <byteslice@airmail.cc> | 2023-02-05 20:22:02 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-02-07 05:57:44 +0100 |
commit | 2415d37ea296e8856267375989a8b95cebe2575a (patch) | |
tree | 376baf5952a8ccc15b445702d38c056ffa71dd1b /src/core/hle/kernel/svc/svc_address_translation.cpp | |
parent | Merge pull request #9731 from liamwhite/svc-move-only (diff) | |
download | yuzu-2415d37ea296e8856267375989a8b95cebe2575a.tar yuzu-2415d37ea296e8856267375989a8b95cebe2575a.tar.gz yuzu-2415d37ea296e8856267375989a8b95cebe2575a.tar.bz2 yuzu-2415d37ea296e8856267375989a8b95cebe2575a.tar.lz yuzu-2415d37ea296e8856267375989a8b95cebe2575a.tar.xz yuzu-2415d37ea296e8856267375989a8b95cebe2575a.tar.zst yuzu-2415d37ea296e8856267375989a8b95cebe2575a.zip |
Diffstat (limited to 'src/core/hle/kernel/svc/svc_address_translation.cpp')
-rw-r--r-- | src/core/hle/kernel/svc/svc_address_translation.cpp | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/src/core/hle/kernel/svc/svc_address_translation.cpp b/src/core/hle/kernel/svc/svc_address_translation.cpp index 299e22ae6..c25e144cd 100644 --- a/src/core/hle/kernel/svc/svc_address_translation.cpp +++ b/src/core/hle/kernel/svc/svc_address_translation.cpp @@ -2,5 +2,49 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "core/hle/kernel/svc.h" +#include "core/hle/kernel/svc_results.h" -namespace Kernel::Svc {} // namespace Kernel::Svc +namespace Kernel::Svc { + +Result QueryPhysicalAddress(Core::System& system, lp64::PhysicalMemoryInfo* out_info, + uint64_t address) { + UNIMPLEMENTED(); + R_THROW(ResultNotImplemented); +} + +Result QueryIoMapping(Core::System& system, uintptr_t* out_address, uintptr_t* out_size, + uint64_t physical_address, uint64_t size) { + UNIMPLEMENTED(); + R_THROW(ResultNotImplemented); +} + +Result QueryPhysicalAddress64(Core::System& system, lp64::PhysicalMemoryInfo* out_info, + uint64_t address) { + R_RETURN(QueryPhysicalAddress(system, out_info, address)); +} + +Result QueryIoMapping64(Core::System& system, uintptr_t* out_address, uintptr_t* out_size, + uint64_t physical_address, uint64_t size) { + R_RETURN(QueryIoMapping(system, out_address, out_size, physical_address, size)); +} + +Result QueryPhysicalAddress64From32(Core::System& system, ilp32::PhysicalMemoryInfo* out_info, + uint32_t address) { + lp64::PhysicalMemoryInfo info{}; + R_TRY(QueryPhysicalAddress(system, std::addressof(info), address)); + + *out_info = { + .physical_address = info.physical_address, + .virtual_address = static_cast<u32>(info.virtual_address), + .size = static_cast<u32>(info.size), + }; + R_SUCCEED(); +} + +Result QueryIoMapping64From32(Core::System& system, uintptr_t* out_address, uintptr_t* out_size, + uint64_t physical_address, uint32_t size) { + R_RETURN(QueryIoMapping(system, reinterpret_cast<uintptr_t*>(out_address), + reinterpret_cast<uintptr_t*>(out_size), physical_address, size)); +} + +} // namespace Kernel::Svc |