summaryrefslogtreecommitdiff
path: root/src/core/hle/service
diff options
context:
space:
mode:
authorGravatar bunnei2021-02-12 17:02:51 -0800
committerGravatar bunnei2021-02-18 16:16:25 -0800
commit65e0178cc09299550aee949d7b89e211017bddee (patch)
tree97abf71a48320fc5628b4946d793191f2fb9dbb0 /src/core/hle/service
parenthle: kernel: Migrate SlabHeap to KSlabHeap. (diff)
downloadyuzu-65e0178cc09299550aee949d7b89e211017bddee.tar.gz
yuzu-65e0178cc09299550aee949d7b89e211017bddee.tar.xz
yuzu-65e0178cc09299550aee949d7b89e211017bddee.zip
hle: kernel: Migrate to KMemoryBlock, KMemoryBlockManager, and others.
Diffstat (limited to 'src/core/hle/service')
-rw-r--r--src/core/hle/service/ldr/ldr.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp
index d3cd25ff8..b42184a3b 100644
--- a/src/core/hle/service/ldr/ldr.cpp
+++ b/src/core/hle/service/ldr/ldr.cpp
@@ -289,10 +289,10 @@ public:
289 289
290 bool ValidateRegionForMap(Kernel::Memory::PageTable& page_table, VAddr start, 290 bool ValidateRegionForMap(Kernel::Memory::PageTable& page_table, VAddr start,
291 std::size_t size) const { 291 std::size_t size) const {
292 constexpr std::size_t padding_size{4 * Kernel::Memory::PageSize}; 292 constexpr std::size_t padding_size{4 * Kernel::PageSize};
293 const auto start_info{page_table.QueryInfo(start - 1)}; 293 const auto start_info{page_table.QueryInfo(start - 1)};
294 294
295 if (start_info.state != Kernel::Memory::MemoryState::Free) { 295 if (start_info.state != Kernel::KMemoryState::Free) {
296 return {}; 296 return {};
297 } 297 }
298 298
@@ -302,7 +302,7 @@ public:
302 302
303 const auto end_info{page_table.QueryInfo(start + size)}; 303 const auto end_info{page_table.QueryInfo(start + size)};
304 304
305 if (end_info.state != Kernel::Memory::MemoryState::Free) { 305 if (end_info.state != Kernel::KMemoryState::Free) {
306 return {}; 306 return {};
307 } 307 }
308 308
@@ -312,11 +312,10 @@ public:
312 VAddr GetRandomMapRegion(const Kernel::Memory::PageTable& page_table, std::size_t size) const { 312 VAddr GetRandomMapRegion(const Kernel::Memory::PageTable& page_table, std::size_t size) const {
313 VAddr addr{}; 313 VAddr addr{};
314 const std::size_t end_pages{(page_table.GetAliasCodeRegionSize() - size) >> 314 const std::size_t end_pages{(page_table.GetAliasCodeRegionSize() - size) >>
315 Kernel::Memory::PageBits}; 315 Kernel::PageBits};
316 do { 316 do {
317 addr = page_table.GetAliasCodeRegionStart() + 317 addr = page_table.GetAliasCodeRegionStart() +
318 (Kernel::KSystemControl::GenerateRandomRange(0, end_pages) 318 (Kernel::KSystemControl::GenerateRandomRange(0, end_pages) << Kernel::PageBits);
319 << Kernel::Memory::PageBits);
320 } while (!page_table.IsInsideAddressSpace(addr, size) || 319 } while (!page_table.IsInsideAddressSpace(addr, size) ||
321 page_table.IsInsideHeapRegion(addr, size) || 320 page_table.IsInsideHeapRegion(addr, size) ||
322 page_table.IsInsideAliasRegion(addr, size)); 321 page_table.IsInsideAliasRegion(addr, size));
@@ -387,7 +386,7 @@ public:
387 const VAddr data_start{start + nro_header.segment_headers[DATA_INDEX].memory_offset}; 386 const VAddr data_start{start + nro_header.segment_headers[DATA_INDEX].memory_offset};
388 const VAddr bss_start{data_start + nro_header.segment_headers[DATA_INDEX].memory_size}; 387 const VAddr bss_start{data_start + nro_header.segment_headers[DATA_INDEX].memory_size};
389 const VAddr bss_end_addr{ 388 const VAddr bss_end_addr{
390 Common::AlignUp(bss_start + nro_header.bss_size, Kernel::Memory::PageSize)}; 389 Common::AlignUp(bss_start + nro_header.bss_size, Kernel::PageSize)};
391 390
392 auto CopyCode{[&](VAddr src_addr, VAddr dst_addr, u64 size) { 391 auto CopyCode{[&](VAddr src_addr, VAddr dst_addr, u64 size) {
393 std::vector<u8> source_data(size); 392 std::vector<u8> source_data(size);
@@ -402,12 +401,12 @@ public:
402 nro_header.segment_headers[DATA_INDEX].memory_size); 401 nro_header.segment_headers[DATA_INDEX].memory_size);
403 402
404 CASCADE_CODE(process->PageTable().SetCodeMemoryPermission( 403 CASCADE_CODE(process->PageTable().SetCodeMemoryPermission(
405 text_start, ro_start - text_start, Kernel::Memory::MemoryPermission::ReadAndExecute)); 404 text_start, ro_start - text_start, Kernel::KMemoryPermission::ReadAndExecute));
406 CASCADE_CODE(process->PageTable().SetCodeMemoryPermission( 405 CASCADE_CODE(process->PageTable().SetCodeMemoryPermission(ro_start, data_start - ro_start,
407 ro_start, data_start - ro_start, Kernel::Memory::MemoryPermission::Read)); 406 Kernel::KMemoryPermission::Read));
408 407
409 return process->PageTable().SetCodeMemoryPermission( 408 return process->PageTable().SetCodeMemoryPermission(
410 data_start, bss_end_addr - data_start, Kernel::Memory::MemoryPermission::ReadAndWrite); 409 data_start, bss_end_addr - data_start, Kernel::KMemoryPermission::ReadAndWrite);
411 } 410 }
412 411
413 void LoadNro(Kernel::HLERequestContext& ctx) { 412 void LoadNro(Kernel::HLERequestContext& ctx) {