From 2e36c24a01f30f91873cfab208ffdfe13a18f097 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Fri, 21 Jun 2019 20:22:26 -0700 Subject: [PATCH] add safe IoMapping getter --- include/stratosphere/utilities.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/stratosphere/utilities.hpp b/include/stratosphere/utilities.hpp index 3d1f3dc0..1df2ed82 100644 --- a/include/stratosphere/utilities.hpp +++ b/include/stratosphere/utilities.hpp @@ -21,6 +21,14 @@ #include "hossynch.hpp" #include "mitm/sm_mitm.h" +static inline uintptr_t GetIoMapping(const u64 io_addr, const u64 io_size) { + u64 vaddr; + const u64 aligned_addr = (io_addr & ~0xFFFul); + const u64 aligned_size = io_size + (io_addr - aligned_addr); + R_ASSERT(svcQueryIoMapping(&vaddr, aligned_addr, aligned_size)); + return static_cast(vaddr + (io_addr - aligned_addr)); +} + static inline void RebootToRcm() { SecmonArgs args = {0}; args.X[0] = 0xC3000401; /* smcSetConfig */