Changes

403 bytes added ,  22:16, 23 October 2024
no edit summary
Line 29: Line 29:  
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| Magicnum "META"
+
| Magic ("META")
 
|-
 
|-
 
| 0x4
 
| 0x4
 
| 0x4
 
| 0x4
| [9.0.0+] AcidSignatureKeyGeneration (0 or 1)
+
| [9.0.0+] SignatureKeyGeneration
 
|-
 
|-
 
| 0x8
 
| 0x8
Line 113: Line 113:  
|-
 
|-
 
| 4
 
| 4
| OptimizeMemoryAllocation
+
| [7.0.0+] OptimizeMemoryAllocation
 +
|-
 +
| 5
 +
| [11.0.0+] DisableDeviceAddressSpaceMerge
 +
|-
 +
| 6
 +
| [18.0.0+] EnableAliasRegionExtraSize
 +
|-
 +
| 7
 +
| [19.0.0+] PreventCodeReads
 
|}
 
|}
   Line 120: Line 129:     
== SystemResourceSize ==
 
== SystemResourceSize ==
This is the size of PersonalMmHeap. Maximum size as of 5.0.0 is 0x1FE00000.
+
When this is non-zero, the kernel reserves this amount of memory and dynamically uses it as needed for page table pages, KMemoryBlocks, and KBlockInfos. When this is zero, the process uses global shared heaps for these.
 +
 
 +
This enables a process to sacrifice some of the memory available to it in order to have higher limits on these resources, thus enabling the use of SvcMapPhysicalMemory.
 +
 
 +
Maximum size as is 0x1FE00000.
 +
 
    
== Version ==
 
== Version ==
Line 130: Line 144:     
== MainThreadStackSize ==
 
== MainThreadStackSize ==
Must be aligned to 0x1000.
+
Must be aligned to 0x1000. If zero, kernel will start the process's initial thread with sp=0.
 
  −
In non-nspwn scenarios, values of 0 can also rarely break in Horizon. This might be something auto-adapting or a security feature of some sort?
      
= ACID =
 
= ACID =
Line 151: Line 163:  
| 0x200
 
| 0x200
 
| 0x4
 
| 0x4
| Magicnum "ACID"
+
| Magic ("ACID")
 
|-
 
|-
 
| 0x204
 
| 0x204
Line 158: Line 170:  
|-
 
|-
 
| 0x208
 
| 0x208
| 0x4
+
| 0x1
 +
| [9.0.0+] Version
 +
|-
 +
| 0x209
 +
| 0x1
 +
| [14.0.0+]
 +
|-
 +
| 0x20A
 +
| 0x2
 
| Reserved
 
| Reserved
 
|-
 
|-
Line 175: Line 195:  
| 0x220
 
| 0x220
 
| 0x4
 
| 0x4
| [[#FsAccessControl|FsAccessControlOffset]]
+
| [[#FsAccessControl|FacOffset]]
 
|-
 
|-
 
| 0x224
 
| 0x224
 
| 0x4
 
| 0x4
| [[#FsAccessControl|FsAccessControlSize]]
+
| [[#FsAccessControl|FacSize]]
 
|-
 
|-
 
| 0x228
 
| 0x228
 
| 0x4
 
| 0x4
| [[#SrvAccessControl|SrvAccessControlOffset]]
+
| [[#SrvAccessControl|SacOffset]]
 
|-
 
|-
 
| 0x22C
 
| 0x22C
 
| 0x4
 
| 0x4
| [[#SrvAccessControl|SrvAccessControlSize]]
+
| [[#SrvAccessControl|SacSize]]
 
|-
 
|-
 
| 0x230
 
| 0x230
 
| 0x4
 
| 0x4
| [[#KernelCapability|KernelCapabilityOffset]]
+
| [[#KernelCapability|KcOffset]]
 
|-
 
|-
 
| 0x234
 
| 0x234
 
| 0x4
 
| 0x4
| [[#KernelCapability|KernelCapabilitySize]]
+
| [[#KernelCapability|KcSize]]
 
|-
 
|-
 
| 0x238
 
| 0x238
Line 214: Line 234:  
| UnqualifiedApproval
 
| UnqualifiedApproval
 
|-
 
|-
| 2-3
+
| 2-5
| [5.0.0+ ] MemoryRegion (0 = Application, 1 = Applet, 2 = SecureSystem, 3 = NonSecureSystem)
+
| [5.0.0+] MemoryRegion (0 = Application, 1 = Applet, 2 = SecureSystem, 3 = NonSecureSystem)
 
|}
 
|}
   Line 229: Line 249:  
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| Magicnum "ACI0"
+
| Magic ("ACI0")
 
|-
 
|-
 
| 0x4
 
| 0x4
Line 245: Line 265:  
| 0x20
 
| 0x20
 
| 0x4
 
| 0x4
| [[#FsAccessControl|FsAccessControlOffset]]
+
| [[#FsAccessControl|FacOffset]]
 
|-
 
|-
 
| 0x24
 
| 0x24
 
| 0x4
 
| 0x4
| [[#FsAccessControl|FsAccessControlSize]]
+
| [[#FsAccessControl|FacSize]]
 
|-
 
|-
 
| 0x28
 
| 0x28
 
| 0x4
 
| 0x4
| [[#SrvAccessControl|SrvAccessControlOffset]]
+
| [[#SrvAccessControl|SacOffset]]
 
|-
 
|-
 
| 0x2C
 
| 0x2C
 
| 0x4
 
| 0x4
| [[#SrvAccessControl|SrvAccessControlSize]]
+
| [[#SrvAccessControl|SacSize]]
 
|-
 
|-
 
| 0x30
 
| 0x30
 
| 0x4
 
| 0x4
| [[#KernelCapability|KernelCapabilityOffset]]
+
| [[#KernelCapability|KcOffset]]
 
|-
 
|-
 
| 0x34
 
| 0x34
 
| 0x4
 
| 0x4
| [[#KernelCapability|KernelCapabilitySize]]
+
| [[#KernelCapability|KcSize]]
 
|-
 
|-
 
| 0x38
 
| 0x38
Line 536: Line 556:  
|  
 
|  
 
|-
 
|-
| 37-61
+
| 37
 +
| DeviceTreeBlob
 +
|
 +
|-
 +
| 38
 +
| NotifyErrorContextServiceReady
 +
|
 +
|-
 +
| 39-61
 
| Reserved
 
| Reserved
 
|  
 
|  
Line 636: Line 664:  
|-
 
|-
 
| 4-9
 
| 4-9
| HighestPriority
+
| LowestPriority
 
|-
 
|-
 
| 10-15
 
| 10-15
| LowestPriority
+
| HighestPriority
 
|-
 
|-
 
| 16-23
 
| 16-23
Line 741: Line 769:  
| RegionIsReadOnly2
 
| RegionIsReadOnly2
 
|}
 
|}
  −
MemoryRegionMap is supported by the kernel but not by [[Loader_services|Loader]]. Thus, only initial processes may possess this capability.
      
== EnableInterrupts ==
 
== EnableInterrupts ==
Line 806: Line 832:  
|-
 
|-
 
| 5.0.0 || 9.3 || 5.3.0.0
 
| 5.0.0 || 9.3 || 5.3.0.0
 +
|-
 +
| 10.0.0 || 14.4 || 10.4.0.0
 +
|-
 +
| 11.0.0 || 15.4 || 11.4.0.0
 +
|-
 +
| 11.0.1 || 15.4 || 11.4.0.0
 
|}
 
|}
   Line 828: Line 860:  
|-
 
|-
 
| 18
 
| 18
| ForceDebug
+
| [19.0.0+] ForceDebugProd ([1.0.0-18.1.0] ForceDebug)
 +
|-
 +
| 19
 +
| [19.0.0+] ForceDebug
 
|}
 
|}