Memory layout: Difference between revisions
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" | ||
! | ! 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). | ||
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. |