Reduce system reserved space to 0x700000000 and map fixed on macOS.
This commit is contained in:
parent
f943ce2710
commit
e2adbd75c3
|
@ -559,7 +559,7 @@ target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAlloca
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
# Reserve system-managed memory space.
|
# Reserve system-managed memory space.
|
||||||
target_link_options(shadps4 PRIVATE -Wl,-no_pie,-no_fixup_chains,-no_huge,-pagezero_size,0x400000,-segaddr,SYSTEM_MANAGED,0x400000,-image_base,0x10000000000)
|
target_link_options(shadps4 PRIVATE -Wl,-no_pie,-no_fixup_chains,-no_huge,-pagezero_size,0x400000,-segaddr,GUEST_SYSTEM,0x400000,-image_base,0x10000000000)
|
||||||
|
|
||||||
# Link MoltenVK for Vulkan support
|
# Link MoltenVK for Vulkan support
|
||||||
find_library(MOLTENVK MoltenVK REQUIRED)
|
find_library(MOLTENVK MoltenVK REQUIRED)
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
// Reserve space for the system-managed address space using a zerofill section.
|
// Reserve space for the system address space using a zerofill section.
|
||||||
asm(".zerofill SYSTEM_MANAGED,SYSTEM_MANAGED,__system_managed,0x800000000");
|
asm(".zerofill GUEST_SYSTEM,GUEST_SYSTEM,__guest_system,0xEFFC00000");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
@ -295,7 +295,7 @@ struct AddressSpace::Impl {
|
||||||
// Cannot guarantee enough space for these areas at the desired addresses, so not MAP_FIXED.
|
// Cannot guarantee enough space for these areas at the desired addresses, so not MAP_FIXED.
|
||||||
system_reserved_base = reinterpret_cast<u8*>(
|
system_reserved_base = reinterpret_cast<u8*>(
|
||||||
mmap(reinterpret_cast<void*>(SYSTEM_RESERVED_MIN), system_reserved_size,
|
mmap(reinterpret_cast<void*>(SYSTEM_RESERVED_MIN), system_reserved_size,
|
||||||
protection_flags, base_map_flags, -1, 0));
|
protection_flags, base_map_flags | MAP_FIXED, -1, 0));
|
||||||
user_base = reinterpret_cast<u8*>(mmap(reinterpret_cast<void*>(USER_MIN), user_size,
|
user_base = reinterpret_cast<u8*>(mmap(reinterpret_cast<void*>(USER_MIN), user_size,
|
||||||
protection_flags, base_map_flags, -1, 0));
|
protection_flags, base_map_flags, -1, 0));
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -23,7 +23,12 @@ constexpr VAddr CODE_BASE_OFFSET = 0x100000000ULL;
|
||||||
constexpr VAddr SYSTEM_MANAGED_MIN = 0x00000400000ULL;
|
constexpr VAddr SYSTEM_MANAGED_MIN = 0x00000400000ULL;
|
||||||
constexpr VAddr SYSTEM_MANAGED_MAX = 0x07FFFFBFFFULL;
|
constexpr VAddr SYSTEM_MANAGED_MAX = 0x07FFFFBFFFULL;
|
||||||
constexpr VAddr SYSTEM_RESERVED_MIN = 0x800000000ULL;
|
constexpr VAddr SYSTEM_RESERVED_MIN = 0x800000000ULL;
|
||||||
|
#ifdef __APPLE__
|
||||||
|
// Can only comfortably reserve the first 0x700000000 of reserved space.
|
||||||
|
constexpr VAddr SYSTEM_RESERVED_MAX = 0xEFFFFFFFFULL;
|
||||||
|
#else
|
||||||
constexpr VAddr SYSTEM_RESERVED_MAX = 0xFFFFFFFFFULL;
|
constexpr VAddr SYSTEM_RESERVED_MAX = 0xFFFFFFFFFULL;
|
||||||
|
#endif
|
||||||
constexpr VAddr USER_MIN = 0x1000000000ULL;
|
constexpr VAddr USER_MIN = 0x1000000000ULL;
|
||||||
constexpr VAddr USER_MAX = 0xFBFFFFFFFFULL;
|
constexpr VAddr USER_MAX = 0xFBFFFFFFFFULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue