Changes

572 bytes added ,  12:41, 10 September 2016
Line 602: Line 602:     
== FCRAM memory-regions layout ==
 
== FCRAM memory-regions layout ==
 +
FCRAM is partitioned into three regions of memory (APPLICATION, SYSTEM, and BASE). Most applications can only allocate memory from one of these regions (which is encoded in the [[NCCH/Extended_Header#ARM11_Kernel_Flags|process kernel flags]]). There is a fixed set of possible size of each memory region, determined by the APPMEMTYPE value in [[Configuration_Memory#APPMEMTYPE|configuration memory]] (which in turn is set up according to the [[FIRM#FIRM_Launch_Parameters|firmware launch parameters]]).
 +
 +
Support for APPMEMTYPEs 6 and 7 was implemented in [[NS]] with [[8.0.0-18]]. These configurations are only supported in the [[New_3DS]] ARM11-kernel, and are in fact the only ones supported there at all. Applications only get access to the larger memory regions when this is specified in their [[NCCH/Extended Header#New3DS System Mode|extended header]].
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
[[Configuration_Memory#APPMEMTYPE|Configmem-APPMEMTYPE]] Value
+
!  APPMEMTYPE Value
 
!  Base address relative to FCRAM+0, for APPLICATION mem-region
 
!  Base address relative to FCRAM+0, for APPLICATION mem-region
 
!  Region size, for APPLICATION mem-region
 
!  Region size, for APPLICATION mem-region
Line 669: Line 673:     
The SYSTEM mem-region size is calculated with: size = FCRAMTOTALSIZE - (APPLICATION_MEMREGIONSIZE + BASE_MEMREGIONSIZE).
 
The SYSTEM mem-region size is calculated with: size = FCRAMTOTALSIZE - (APPLICATION_MEMREGIONSIZE + BASE_MEMREGIONSIZE).
  −
Support for type6/7 was [[NCCH/Extended Header|implemented]] in [[NS]] with [[8.0.0-18]], these are only supported in the [[New_3DS]] ARM11-kernel not the regular 3DS kernel. These two types are the only ones supported by the New3DS kernel.
      
All memory allocated by the kernel itself for kernel use is located under BASE. Most system-modules run under the BASE memregion too.
 
All memory allocated by the kernel itself for kernel use is located under BASE. Most system-modules run under the BASE memregion too.
549

edits