€•áVŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ#/translations/zh_CN/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/zh_TW/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/it_IT/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/ja_JP/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/ko_KR/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/pt_BR/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ#/translations/sp_SP/arch/arm/memory”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ!Kernel Memory Layout on ARM Linux”h]”hŒ!Kernel Memory Layout on ARM Linux”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ=/var/lib/git/docbuild/linux/Documentation/arch/arm/memory.rst”h´KubhŒ block_quote”“”)�”}”(hŒERussell King November 17, 2005 (2.6.15) ”h]”(hŒ paragraph”“”)�”}”(hŒ#Russell King ”h]”(hŒRussell King <”…”�”}”(hhÓh²hh³Nh´NubhŒ reference”“”)�”}”(hŒrmk@arm.linux.org.uk”h]”hŒrmk@arm.linux.org.uk”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:rmk@arm.linux.org.uk”uh1hÛhhÓubhŒ>”…”�”}”(hhÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KhhÍubhÌ)�”}”(hŒNovember 17, 2005 (2.6.15) ”h]”hÒ)�”}”(hŒNovember 17, 2005 (2.6.15)”h]”hŒNovember 17, 2005 (2.6.15)”…”�”}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khh÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhhÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÒ)�”}”(hŒÀThis document describes the virtual memory layout which the Linux kernel uses for ARM processors. It indicates which regions are free for platforms to use, and which are used by generic code.”h]”hŒÀThis document describes the virtual memory layout which the Linux kernel uses for ARM processors. It indicates which regions are free for platforms to use, and which are used by generic code.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K hh·h²hubhÒ)�”}”(hŒ£The ARM CPU is capable of addressing a maximum of 4GB virtual memory space, and this must be shared between user space processes, the kernel, and hardware devices.”h]”hŒ£The ARM CPU is capable of addressing a maximum of 4GB virtual memory space, and this must be shared between user space processes, the kernel, and hardware devices.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K hh·h²hubhÒ)�”}”(hŒµAs the ARM architecture matures, it becomes necessary to reserve certain regions of VM space for use for new facilities; therefore this document may reserve more VM space over time.”h]”hŒµAs the ARM architecture matures, it becomes necessary to reserve certain regions of VM space for use for new facilities; therefore this document may reserve more VM space over time.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khh·h²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jIhjFubjJ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jIhjFubjJ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K/uh1jIhjFubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÒ)�”}”(hŒStart”h]”hŒStart”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjpubjt)�”}”(hhh]”hÒ)�”}”(hŒEnd”h]”hŒEnd”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjpubjt)�”}”(hhh]”hÒ)�”}”(hŒUse”h]”hŒUse”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjFubhŒtbody”“”)�”}”(hhh]”(jo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒffff8000”h]”hŒffff8000”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjËubjt)�”}”(hhh]”hÒ)�”}”(hŒffffffff”h]”hŒffffffff”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjËubjt)�”}”(hhh]”hÒ)�”}”(hŒgcopy_user_page / clear_user_page use. For SA11xx and Xscale, this is used to setup a minicache mapping.”h]”hŒgcopy_user_page / clear_user_page use. For SA11xx and Xscale, this is used to setup a minicache mapping.”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒffff4000”h]”hŒffff4000”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubjt)�”}”(hhh]”hÒ)�”}”(hŒffffffff”h]”hŒffffffff”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubjt)�”}”(hhh]”hÒ)�”}”(hŒ'cache aliasing on ARMv6 and later CPUs.”h]”hŒ'cache aliasing on ARMv6 and later CPUs.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒffff1000”h]”hŒffff1000”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjgubjt)�”}”(hhh]”hÒ)�”}”(hŒffff7fff”h]”hŒffff7fff”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjgubjt)�”}”(hhh]”hÒ)�”}”(hŒ4Reserved. Platforms must not use this address range.”h]”hŒ4Reserved. Platforms must not use this address range.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒffff0000”h]”hŒffff0000”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K!hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjµubjt)�”}”(hhh]”hÒ)�”}”(hŒffff0fff”h]”hŒffff0fff”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K!hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjµubjt)�”}”(hhh]”hÒ)�”}”(hŒpCPU vector page. The CPU vectors are mapped here if the CPU supports vector relocation (control register V bit.)”h]”hŒpCPU vector page. The CPU vectors are mapped here if the CPU supports vector relocation (control register V bit.)”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K!hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒfffe0000”h]”hŒfffe0000”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K&hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubjt)�”}”(hhh]”hÒ)�”}”(hŒfffeffff”h]”hŒfffeffff”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K&hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubjt)�”}”(hhh]”hÒ)�”}”(hŒrXScale cache flush area. This is used in proc-xscale.S to flush the whole data cache. (XScale does not have TCM.)”h]”hŒrXScale cache flush area. This is used in proc-xscale.S to flush the whole data cache. (XScale does not have TCM.)”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K&hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒfffe8000”h]”hŒfffe8000”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K*hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjQubjt)�”}”(hhh]”hÒ)�”}”(hŒfffeffff”h]”hŒfffeffff”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K*hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjQubjt)�”}”(hhh]”hÒ)�”}”(hŒADTCM mapping area for platforms with DTCM mounted inside the CPU.”h]”hŒADTCM mapping area for platforms with DTCM mounted inside the CPU.”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K*hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒfffe0000”h]”hŒfffe0000”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K-hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjŸubjt)�”}”(hhh]”hÒ)�”}”(hŒfffe7fff”h]”hŒfffe7fff”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K-hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjŸubjt)�”}”(hhh]”hÒ)�”}”(hŒAITCM mapping area for platforms with ITCM mounted inside the CPU.”h]”hŒAITCM mapping area for platforms with ITCM mounted inside the CPU.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K-hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒffc80000”h]”hŒffc80000”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K0hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjíubjt)�”}”(hhh]”hÒ)�”}”(hŒffefffff”h]”hŒffefffff”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K0hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjíubjt)�”}”(hhh]”hÒ)�”}”(hŒQFixmap mapping region. Addresses provided by fix_to_virt() will be located here.”h]”hŒQFixmap mapping region. Addresses provided by fix_to_virt() will be located here.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K0hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒffc00000”h]”hŒffc00000”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K3hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj;ubjt)�”}”(hhh]”hÒ)�”}”(hŒffc7ffff”h]”hŒffc7ffff”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K3hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj;ubjt)�”}”(hhh]”hÒ)�”}”(hŒ Guard region”h]”hŒ Guard region”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K3hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒff800000”h]”hŒff800000”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K5hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj‰ubjt)�”}”(hhh]”hÒ)�”}”(hŒffbfffff”h]”hŒffbfffff”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K5hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj‰ubjt)�”}”(hhh]”hÒ)�”}”(hŒCPermanent, fixed read-only mapping of the firmware provided DT blob”h]”hŒCPermanent, fixed read-only mapping of the firmware provided DT blob”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K5hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒfee00000”h]”hŒfee00000”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K8hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj×ubjt)�”}”(hhh]”hÒ)�”}”(hŒfeffffff”h]”hŒfeffffff”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K8hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj×ubjt)�”}”(hhh]”hÒ)�”}”(hŒLMapping of PCI I/O space. This is a static mapping within the vmalloc space.”h]”hŒLMapping of PCI I/O space. This is a static mapping within the vmalloc space.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ VMALLOC_START”h]”hŒ VMALLOC_START”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K;hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj%ubjt)�”}”(hhh]”hÒ)�”}”(hŒ VMALLOC_END-1”h]”hŒ VMALLOC_END-1”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K;hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj%ubjt)�”}”(hhh]”hÒ)�”}”(hX$vmalloc() / ioremap() space. Memory returned by vmalloc/ioremap will be dynamically placed in this region. Machine specific static mappings are also located here through iotable_init(). VMALLOC_START is based upon the value of the high_memory variable, and VMALLOC_END is equal to 0xff800000.”h]”hX$vmalloc() / ioremap() space. Memory returned by vmalloc/ioremap will be dynamically placed in this region. Machine specific static mappings are also located here through iotable_init(). VMALLOC_START is based upon the value of the high_memory variable, and VMALLOC_END is equal to 0xff800000.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K;hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ PAGE_OFFSET”h]”hŒ PAGE_OFFSET”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KDhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjsubjt)�”}”(hhh]”hÒ)�”}”(hŒ high_memory-1”h]”hŒ high_memory-1”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KDhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjsubjt)�”}”(hhh]”hÒ)�”}”(hŒxKernel direct-mapped RAM region. This maps the platforms RAM, and typically maps all platform RAM in a 1:1 relationship.”h]”hŒxKernel direct-mapped RAM region. This maps the platforms RAM, and typically maps all platform RAM in a 1:1 relationship.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KDhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ PKMAP_BASE”h]”hŒ PKMAP_BASE”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KHhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÁubjt)�”}”(hhh]”hÒ)�”}”(hŒ PAGE_OFFSET-1”h]”hŒ PAGE_OFFSET-1”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KHhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÁubjt)�”}”(hhh]”hÒ)�”}”(hŒMPermanent kernel mappings One way of mapping HIGHMEM pages into kernel space.”h]”hŒMPermanent kernel mappings One way of mapping HIGHMEM pages into kernel space.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KHhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ MODULES_VADDR”h]”hŒ MODULES_VADDR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KLhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubjt)�”}”(hhh]”hÒ)�”}”(hŒ MODULES_END-1”h]”hŒ MODULES_END-1”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KLhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubjt)�”}”(hhh]”hÒ)�”}”(hŒ^Kernel module space Kernel modules inserted via insmod are placed here using dynamic mappings.”h]”hŒ^Kernel module space Kernel modules inserted via insmod are placed here using dynamic mappings.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KLhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ TASK_SIZE”h]”hŒ TASK_SIZE”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KPhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj]ubjt)�”}”(hhh]”hÒ)�”}”(hŒMODULES_VADDR-1”h]”hŒMODULES_VADDR-1”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KPhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj]ubjt)�”}”(hhh]”hÒ)�”}”(hŒ�KASAn shadow memory when KASan is in use. The range from MODULES_VADDR to the top of the memory is shadowed here with 1 bit per byte of memory.”h]”hŒ�KASAn shadow memory when KASan is in use. The range from MODULES_VADDR to the top of the memory is shadowed here with 1 bit per byte of memory.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KPhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ00001000”h]”hŒ00001000”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KUhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj«ubjt)�”}”(hhh]”hÒ)�”}”(hŒ TASK_SIZE-1”h]”hŒ TASK_SIZE-1”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KUhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj«ubjt)�”}”(hhh]”hÒ)�”}”(hŒSUser space mappings Per-thread mappings are placed here via the mmap() system call.”h]”hŒSUser space mappings Per-thread mappings are placed here via the mmap() system call.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KUhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubjo)�”}”(hhh]”(jt)�”}”(hhh]”hÒ)�”}”(hŒ00000000”h]”hŒ00000000”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KYhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjùubjt)�”}”(hhh]”hÒ)�”}”(hŒ00000fff”h]”hŒ00000fff”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjùubjt)�”}”(hhh]”hÒ)�”}”(hŒËCPU vector page / null pointer trap CPUs which do not support vector remapping place their vector page here. NULL pointer dereferences by both the kernel and user space are also caught via this mapping.”h]”hŒËCPU vector page / null pointer trap CPUs which do not support vector remapping place their vector page here. NULL pointer dereferences by both the kernel and user space are also caught via this mapping.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KYhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jnhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jDhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j?hh·h²hh³hÊh´NubhÒ)�”}”(hŒœPlease note that mappings which collide with the above areas may result in a non-bootable kernel, or may cause the kernel to (eventually) panic at run time.”h]”hŒœPlease note that mappings which collide with the above areas may result in a non-bootable kernel, or may cause the kernel to (eventually) panic at run time.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K`hh·h²hubhÒ)�”}”(hX Since future CPUs may impact the kernel mapping layout, user programs must not access any memory which is not mapped inside their 0x0001000 to TASK_SIZE address range. If they wish to access these areas, they must set up their own mappings using open() and mmap().”h]”hX Since future CPUs may impact the kernel mapping layout, user programs must not access any memory which is not mapped inside their 0x0001000 to TASK_SIZE address range. If they wish to access these areas, they must set up their own mappings using open() and mmap().”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Kdhh·h²hubeh}”(h]”Œ!kernel-memory-layout-on-arm-linux”ah ]”h"]”Œ!kernel memory layout on arm linux”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jsŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”j{jxsŒ nametypes”}”j{‰sh}”jxh·sŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.