diff options
| -rw-r--r-- | src/common/page_table.cpp | 28 | ||||
| -rw-r--r-- | src/common/page_table.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_table.cpp | 24 | 
3 files changed, 18 insertions, 38 deletions
| diff --git a/src/common/page_table.cpp b/src/common/page_table.cpp index 75897eeae..4817b09f9 100644 --- a/src/common/page_table.cpp +++ b/src/common/page_table.cpp @@ -10,12 +10,12 @@ PageTable::PageTable() = default;  PageTable::~PageTable() noexcept = default; -bool PageTable::BeginTraversal(TraversalEntry* out_entry, TraversalContext* out_context, +bool PageTable::BeginTraversal(TraversalEntry& out_entry, TraversalContext& out_context,                                 u64 address) const {      // Setup invalid defaults. -    out_entry->phys_addr = 0; -    out_entry->block_size = page_size; -    out_context->next_page = 0; +    out_entry.phys_addr = 0; +    out_entry.block_size = page_size; +    out_context.next_page = 0;      // Validate that we can read the actual entry.      const auto page = address / page_size; @@ -30,20 +30,20 @@ bool PageTable::BeginTraversal(TraversalEntry* out_entry, TraversalContext* out_      }      // Populate the results. -    out_entry->phys_addr = phys_addr + address; -    out_context->next_page = page + 1; -    out_context->next_offset = address + page_size; +    out_entry.phys_addr = phys_addr + address; +    out_context.next_page = page + 1; +    out_context.next_offset = address + page_size;      return true;  } -bool PageTable::ContinueTraversal(TraversalEntry* out_entry, TraversalContext* context) const { +bool PageTable::ContinueTraversal(TraversalEntry& out_entry, TraversalContext& context) const {      // Setup invalid defaults. -    out_entry->phys_addr = 0; -    out_entry->block_size = page_size; +    out_entry.phys_addr = 0; +    out_entry.block_size = page_size;      // Validate that we can read the actual entry. -    const auto page = context->next_page; +    const auto page = context.next_page;      if (page >= backing_addr.size()) {          return false;      } @@ -55,9 +55,9 @@ bool PageTable::ContinueTraversal(TraversalEntry* out_entry, TraversalContext* c      }      // Populate the results. -    out_entry->phys_addr = phys_addr + context->next_offset; -    context->next_page = page + 1; -    context->next_offset += page_size; +    out_entry.phys_addr = phys_addr + context.next_offset; +    context.next_page = page + 1; +    context.next_offset += page_size;      return true;  } diff --git a/src/common/page_table.h b/src/common/page_table.h index fe254d7ae..82d91e9f3 100644 --- a/src/common/page_table.h +++ b/src/common/page_table.h @@ -99,9 +99,9 @@ struct PageTable {      PageTable(PageTable&&) noexcept = default;      PageTable& operator=(PageTable&&) noexcept = default; -    bool BeginTraversal(TraversalEntry* out_entry, TraversalContext* out_context, +    bool BeginTraversal(TraversalEntry& out_entry, TraversalContext& out_context,                          u64 address) const; -    bool ContinueTraversal(TraversalEntry* out_entry, TraversalContext* context) const; +    bool ContinueTraversal(TraversalEntry& out_entry, TraversalContext& context) const;      /**       * Resizes the page table to be able to accommodate enough pages within diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp index 28cea9ab3..cbb0fedde 100644 --- a/src/core/hle/kernel/k_page_table.cpp +++ b/src/core/hle/kernel/k_page_table.cpp @@ -41,24 +41,6 @@ constexpr std::size_t GetAddressSpaceWidthFromType(FileSys::ProgramAddressSpaceT      }  } -constexpr u64 GetAddressInRange(const KMemoryInfo& info, VAddr addr) { -    if (info.GetAddress() < addr) { -        return addr; -    } -    return info.GetAddress(); -} - -constexpr std::size_t GetSizeInRange(const KMemoryInfo& info, VAddr start, VAddr end) { -    std::size_t size{info.GetSize()}; -    if (info.GetAddress() < start) { -        size -= start - info.GetAddress(); -    } -    if (info.GetEndAddress() > end) { -        size -= info.GetEndAddress() - end; -    } -    return size; -} -  } // namespace  KPageTable::KPageTable(Core::System& system_) @@ -724,8 +706,7 @@ ResultCode KPageTable::UnmapPhysicalMemory(VAddr address, std::size_t size) {          size_t tot_size = 0;          cur_address = address; -        next_valid = -            impl.BeginTraversal(std::addressof(next_entry), std::addressof(context), cur_address); +        next_valid = impl.BeginTraversal(next_entry, context, cur_address);          next_entry.block_size =              (next_entry.block_size - (next_entry.phys_addr & (next_entry.block_size - 1))); @@ -751,8 +732,7 @@ ResultCode KPageTable::UnmapPhysicalMemory(VAddr address, std::size_t size) {                  break;              } -            next_valid = -                impl.ContinueTraversal(std::addressof(next_entry), std::addressof(context)); +            next_valid = impl.ContinueTraversal(next_entry, context);          }          // Add the last block. | 
