mirror of
https://git.tardis.systems/mirrors/yuzu
synced 2025-12-05 17:23:20 +01:00
This implements svcMapPhysicalMemory/svcUnmapPhysicalMemory for Yuzu, which can be used to map memory at a desired address by games since 3.0.0. It also properly parses SystemResourceSize from NPDM, and makes information available via svcGetInfo. This is needed for games like Super Smash Bros. and Diablo 3 -- this PR's implementation does not run into the "ASCII reads" issue mentioned in the comments of #2626, which was caused by the following bugs in Yuzu's memory management that this PR also addresses: * Yuzu's memory coalescing does not properly merge blocks. This results in a polluted address space/svcQueryMemory results that would be impossible to replicate on hardware, which can lead to game code making the wrong assumptions about memory layout. * This implements better merging for AllocatedMemoryBlocks. * Yuzu's implementation of svcMirrorMemory unprotected the entire virtual memory range containing the range being mirrored. This could lead to games attempting to map data at that unprotected range/attempting to access that range after yuzu improperly unmapped it. * This PR fixes it by simply calling ReprotectRange instead of Reprotect. |
||
|---|---|---|
| .. | ||
| system_archive | ||
| bis_factory.cpp | ||
| bis_factory.h | ||
| card_image.cpp | ||
| card_image.h | ||
| cheat_engine.cpp | ||
| cheat_engine.h | ||
| content_archive.cpp | ||
| content_archive.h | ||
| control_metadata.cpp | ||
| control_metadata.h | ||
| directory.h | ||
| errors.h | ||
| fsmitm_romfsbuild.cpp | ||
| fsmitm_romfsbuild.h | ||
| ips_layer.cpp | ||
| ips_layer.h | ||
| kernel_executable.cpp | ||
| kernel_executable.h | ||
| mode.h | ||
| nca_metadata.cpp | ||
| nca_metadata.h | ||
| nca_patch.cpp | ||
| nca_patch.h | ||
| partition_filesystem.cpp | ||
| partition_filesystem.h | ||
| patch_manager.cpp | ||
| patch_manager.h | ||
| program_metadata.cpp | ||
| program_metadata.h | ||
| registered_cache.cpp | ||
| registered_cache.h | ||
| romfs_factory.cpp | ||
| romfs_factory.h | ||
| romfs.cpp | ||
| romfs.h | ||
| savedata_factory.cpp | ||
| savedata_factory.h | ||
| sdmc_factory.cpp | ||
| sdmc_factory.h | ||
| submission_package.cpp | ||
| submission_package.h | ||
| vfs_concat.cpp | ||
| vfs_concat.h | ||
| vfs_layered.cpp | ||
| vfs_layered.h | ||
| vfs_offset.cpp | ||
| vfs_offset.h | ||
| vfs_real.cpp | ||
| vfs_real.h | ||
| vfs_static.h | ||
| vfs_types.h | ||
| vfs_vector.cpp | ||
| vfs_vector.h | ||
| vfs.cpp | ||
| vfs.h | ||
| xts_archive.cpp | ||
| xts_archive.h | ||