Changes

Jump to navigation Jump to search
33 bytes removed ,  20:35, 22 October 2018
stack
Line 345: Line 345:  
Source range gets reprotected to --- (it can no longer be accessed), and bit0 is set in the source [[#MemoryAttribute]].
 
Source range gets reprotected to --- (it can no longer be accessed), and bit0 is set in the source [[#MemoryAttribute]].
   −
If dstaddr >= LowerTreshold, the dst-range is enforced to be within the process' "MapRegion". Code can get the range of this region from [[#svcGetInfo]] id0=2,3.
+
[1.0.0] This could be used to map into either the Alias Region or the Stack region.
   −
In this case, the mapped memory will have state 0x5C3C0B.
+
[2.0.0+] This can only be used to map into the Stack region.
   −
As long as (dstaddr+size) < LowerThreshold, then you can map anywhere but the mapped memory will have state 0x482907 instead.
+
Code can get the range of the Alias region from [[#svcGetInfo]] id0=2,3, and on 2.0.0+ the range of the Stack region via [[#svcGetInfo]] id0=14, 15 (on 1.0.0, the Stack region had hardcoded limits).
   −
LowerTreshold is 0x80000000 for 36-bit address spaces, and 0x40000000 for 32-bit ones.
+
When mapped into the Alias region, the mapped memory will have state 0x482907.
   −
[2.0.0+] Support for the 0x482907 mappings outside the "MapRegion" were removed.
+
When mapped into the Stack region, the mapped memory will have state 0x5C3C0B.
    
== svcUnmapMemory ==
 
== svcUnmapMemory ==
Line 799: Line 799:  
| Process || 13 || 0 || [2.0.0+] AddressSpaceSize
 
| Process || 13 || 0 || [2.0.0+] AddressSpaceSize
 
|-
 
|-
| Process || 14 || 0 || [2.0.0+] NewMapRegionBaseAddr
+
| Process || 14 || 0 || [2.0.0+] StackRegionBaseAddr
 
|-
 
|-
| Process || 15 || 0 || [2.0.0+] NewMapRegionSize
+
| Process || 15 || 0 || [2.0.0+] StackRegionSize
 
|-
 
|-
 
| Process || 16 || 0 || [3.0.0+] PersonalMmHeapSize
 
| Process || 16 || 0 || [3.0.0+] PersonalMmHeapSize
Line 1,791: Line 1,791:  
| 0x00402006 || MemoryType_SharedMemory || Mapped using [[#svcMapSharedMemory]].
 
| 0x00402006 || MemoryType_SharedMemory || Mapped using [[#svcMapSharedMemory]].
 
|-
 
|-
| 0x00482907 || [1.0.0] MemoryType_WeirdMappedMemory || Mapped using [[#svcMapMemory]].
+
| 0x00482907 || [1.0.0] MemoryType_Alias || Mapped using [[#svcMapMemory]].
 
|-
 
|-
 
| 0x00DD7E08 || MemoryType_ModuleCodeStatic || Mapped using [[#svcMapProcessCodeMemory]].
 
| 0x00DD7E08 || MemoryType_ModuleCodeStatic || Mapped using [[#svcMapProcessCodeMemory]].
Line 1,806: Line 1,806:  
| 0x005C3C0A || [[IPC_Marshalling|MemoryType_IpcBuffer0]] || IPC buffers with descriptor flags=0.
 
| 0x005C3C0A || [[IPC_Marshalling|MemoryType_IpcBuffer0]] || IPC buffers with descriptor flags=0.
 
|-
 
|-
| 0x005C3C0B || MemoryType_MappedMemory || Mapped using [[#svcMapMemory]].
+
| 0x005C3C0B || MemoryType_Stack || Mapped using [[#svcMapMemory]].
 
|-
 
|-
 
| 0x0040200C || [[Thread Local Storage|MemoryType_ThreadLocal]] || Mapped during [[#svcCreateThread]].
 
| 0x0040200C || [[Thread Local Storage|MemoryType_ThreadLocal]] || Mapped during [[#svcCreateThread]].

Navigation menu