|
|
@ -393,30 +393,35 @@ void VMManager::InitializeMemoryRegionRanges(FileSys::ProgramAddressSpaceType ty |
|
|
|
|
|
|
|
|
switch (type) { |
|
|
switch (type) { |
|
|
case FileSys::ProgramAddressSpaceType::Is32Bit: |
|
|
case FileSys::ProgramAddressSpaceType::Is32Bit: |
|
|
|
|
|
case FileSys::ProgramAddressSpaceType::Is32BitNoMap: |
|
|
address_space_width = 32; |
|
|
address_space_width = 32; |
|
|
code_region_base = 0x200000; |
|
|
code_region_base = 0x200000; |
|
|
code_region_end = code_region_base + 0x3FE00000; |
|
|
code_region_end = code_region_base + 0x3FE00000; |
|
|
map_region_size = 0x40000000; |
|
|
|
|
|
heap_region_size = 0x40000000; |
|
|
|
|
|
|
|
|
aslr_region_base = 0x200000; |
|
|
|
|
|
aslr_region_end = aslr_region_base + 0xFFE00000; |
|
|
|
|
|
if (type == FileSys::ProgramAddressSpaceType::Is32Bit) { |
|
|
|
|
|
map_region_size = 0x40000000; |
|
|
|
|
|
heap_region_size = 0x40000000; |
|
|
|
|
|
} else { |
|
|
|
|
|
map_region_size = 0; |
|
|
|
|
|
heap_region_size = 0x80000000; |
|
|
|
|
|
} |
|
|
break; |
|
|
break; |
|
|
case FileSys::ProgramAddressSpaceType::Is36Bit: |
|
|
case FileSys::ProgramAddressSpaceType::Is36Bit: |
|
|
address_space_width = 36; |
|
|
address_space_width = 36; |
|
|
code_region_base = 0x8000000; |
|
|
code_region_base = 0x8000000; |
|
|
code_region_end = code_region_base + 0x78000000; |
|
|
code_region_end = code_region_base + 0x78000000; |
|
|
|
|
|
aslr_region_base = 0x8000000; |
|
|
|
|
|
aslr_region_end = aslr_region_base + 0xFF8000000; |
|
|
map_region_size = 0x180000000; |
|
|
map_region_size = 0x180000000; |
|
|
heap_region_size = 0x180000000; |
|
|
heap_region_size = 0x180000000; |
|
|
break; |
|
|
break; |
|
|
case FileSys::ProgramAddressSpaceType::Is32BitNoMap: |
|
|
|
|
|
address_space_width = 32; |
|
|
|
|
|
code_region_base = 0x200000; |
|
|
|
|
|
code_region_end = code_region_base + 0x3FE00000; |
|
|
|
|
|
map_region_size = 0; |
|
|
|
|
|
heap_region_size = 0x80000000; |
|
|
|
|
|
break; |
|
|
|
|
|
case FileSys::ProgramAddressSpaceType::Is39Bit: |
|
|
case FileSys::ProgramAddressSpaceType::Is39Bit: |
|
|
address_space_width = 39; |
|
|
address_space_width = 39; |
|
|
code_region_base = 0x8000000; |
|
|
code_region_base = 0x8000000; |
|
|
code_region_end = code_region_base + 0x80000000; |
|
|
code_region_end = code_region_base + 0x80000000; |
|
|
|
|
|
aslr_region_base = 0x8000000; |
|
|
|
|
|
aslr_region_end = aslr_region_base + 0x7FF8000000; |
|
|
map_region_size = 0x1000000000; |
|
|
map_region_size = 0x1000000000; |
|
|
heap_region_size = 0x180000000; |
|
|
heap_region_size = 0x180000000; |
|
|
new_map_region_size = 0x80000000; |
|
|
new_map_region_size = 0x80000000; |
|
|
@ -490,6 +495,18 @@ u64 VMManager::GetAddressSpaceWidth() const { |
|
|
return address_space_width; |
|
|
return address_space_width; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
VAddr VMManager::GetASLRRegionBaseAddress() const { |
|
|
|
|
|
return aslr_region_base; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
VAddr VMManager::GetASLRRegionEndAddress() const { |
|
|
|
|
|
return aslr_region_end; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
u64 VMManager::GetASLRRegionSize() const { |
|
|
|
|
|
return aslr_region_end - aslr_region_base; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
VAddr VMManager::GetCodeRegionBaseAddress() const { |
|
|
VAddr VMManager::GetCodeRegionBaseAddress() const { |
|
|
return code_region_base; |
|
|
return code_region_base; |
|
|
} |
|
|
} |
|
|
|