From d7936d3fa4d1ae57b65adba60b1a23c564152c5c Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Tue, 2 Sep 2025 19:50:08 -0700 Subject: [PATCH] exo: improve offset-table fix (save 8 bytes) --- .../source/smc/secmon_smc_register_access.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/exosphere/program/source/smc/secmon_smc_register_access.cpp b/exosphere/program/source/smc/secmon_smc_register_access.cpp index 2e86510b4..40a3df24e 100644 --- a/exosphere/program/source/smc/secmon_smc_register_access.cpp +++ b/exosphere/program/source/smc/secmon_smc_register_access.cpp @@ -54,11 +54,11 @@ namespace ams::secmon::smc { for (int last = arr.size() - 1; last >= 0; --last) { if (arr[last] != 0) { const int end = last + 1; - //for (int start = 0; start < end; ++start) { - // if (arr[start] != 0) { - // return std::make_pair(static_cast(start), static_cast(end)); - // } - //} + for (int start = 0; start < end; ++start) { + if (arr[start] != 0) { + return std::make_pair(static_cast(start), static_cast(end)); + } + } return std::make_pair(static_cast(0), static_cast(end)); } } @@ -101,10 +101,10 @@ namespace ams::secmon::smc { #include "secmon_define_mc01_access_table.inc" constexpr const AccessTableEntry AccessTables[] = { - { PmcAccessTable::ReducedAccessTable.data(), MemoryRegionVirtualDevicePmc.GetAddress(), PmcAccessTable::Address, PmcAccessTable::Size, }, - { McAccessTable::ReducedAccessTable.data(), MemoryRegionVirtualDeviceMemoryController.GetAddress(), McAccessTable::Address, McAccessTable::Size, }, - { Mc01AccessTable::ReducedAccessTable.data(), MemoryRegionVirtualDeviceMemoryController0.GetAddress(), Mc01AccessTable::Address + MemoryRegionPhysicalDeviceMemoryController0.GetAddress(), Mc01AccessTable::Size, }, - { Mc01AccessTable::ReducedAccessTable.data(), MemoryRegionVirtualDeviceMemoryController1.GetAddress(), Mc01AccessTable::Address + MemoryRegionPhysicalDeviceMemoryController1.GetAddress(), Mc01AccessTable::Size, }, + { PmcAccessTable::ReducedAccessTable.data(), MemoryRegionVirtualDevicePmc.GetAddress(), PmcAccessTable::Address, PmcAccessTable::Size, }, + { McAccessTable::ReducedAccessTable.data(), MemoryRegionVirtualDeviceMemoryController.GetAddress(), McAccessTable::Address, McAccessTable::Size, }, + { Mc01AccessTable::ReducedAccessTable.data(), Mc01AccessTable::Address + MemoryRegionVirtualDeviceMemoryController0.GetAddress(), Mc01AccessTable::Address + MemoryRegionPhysicalDeviceMemoryController0.GetAddress(), Mc01AccessTable::Size, }, + { Mc01AccessTable::ReducedAccessTable.data(), Mc01AccessTable::Address + MemoryRegionVirtualDeviceMemoryController1.GetAddress(), Mc01AccessTable::Address + MemoryRegionPhysicalDeviceMemoryController1.GetAddress(), Mc01AccessTable::Size, }, }; constexpr bool IsAccessAllowed(const AccessTableEntry &entry, uintptr_t address) {