€•ˆ‘Œ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/arm”Œ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/arm”Œ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/arm”Œ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/arm”Œ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/arm”Œ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/arm”Œ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/arm”Œ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ŒARM Linux 2.6 and upper”h]”hŒARM Linux 2.6 and upper”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ:/var/lib/git/docbuild/linux/Documentation/arch/arm/arm.rst”h´KubhŒ block_quote”“”)�”}”(hŒDPlease check for updates. ”h]”hŒ paragraph”“”)�”}”(hŒCPlease check for updates.”h]”(hŒPlease check <”…”�”}”(hhÓh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ'ftp://ftp.arm.linux.org.uk/pub/armlinux”h]”hŒ'ftp://ftp.arm.linux.org.uk/pub/armlinux”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”hßuh1hÛhhÓubhŒ> for updates.”…”�”}”(hhÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KhhÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒCompilation of kernel”h]”hŒCompilation of kernel”…”�”}”(hhÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhüh²hh³hÊh´K ubhÌ)�”}”(hX¥In order to compile ARM Linux, you will need a compiler capable of generating ARM ELF code with GNU extensions. GCC 3.3 is known to be a good compiler. Fortunately, you needn't guess. The kernel will report an error if your compiler is a recognized offender. To build ARM Linux natively, you shouldn't have to alter the ARCH = line in the top level Makefile. However, if you don't have the ARM Linux ELF tools installed as default, then you should change the CROSS_COMPILE line as detailed below. If you wish to cross-compile, then alter the following lines in the top level make file:: ARCH = with:: ARCH = arm and:: CROSS_COMPILE= to:: CROSS_COMPILE= eg.:: CROSS_COMPILE=arm-linux- Do a 'make config', followed by 'make Image' to build the kernel (arch/arm/boot/Image). A compressed image can be built by doing a 'make zImage' instead of 'make Image'. ”h]”(hÒ)�”}”(hXIn order to compile ARM Linux, you will need a compiler capable of generating ARM ELF code with GNU extensions. GCC 3.3 is known to be a good compiler. Fortunately, you needn't guess. The kernel will report an error if your compiler is a recognized offender.”h]”hXIn order to compile ARM Linux, you will need a compiler capable of generating ARM ELF code with GNU extensions. GCC 3.3 is known to be a good compiler. Fortunately, you needn’t guess. The kernel will report an error if your compiler is a recognized offender.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K hj ubhÒ)�”}”(hŒîTo build ARM Linux natively, you shouldn't have to alter the ARCH = line in the top level Makefile. However, if you don't have the ARM Linux ELF tools installed as default, then you should change the CROSS_COMPILE line as detailed below.”h]”hŒòTo build ARM Linux natively, you shouldn’t have to alter the ARCH = line in the top level Makefile. However, if you don’t have the ARM Linux ELF tools installed as default, then you should change the CROSS_COMPILE line as detailed below.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj ubhÒ)�”}”(hŒYIf you wish to cross-compile, then alter the following lines in the top level make file::”h]”hŒXIf you wish to cross-compile, then alter the following lines in the top level make file:”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj ubhŒ literal_block”“”)�”}”(hŒARCH = ”h]”hŒARCH = ”…”�”}”hj=sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j;h³hÊh´Khj ubhÒ)�”}”(hŒwith::”h]”hŒwith:”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj ubj<)�”}”(hŒ ARCH = arm”h]”hŒ ARCH = arm”…”�”}”hj[sbah}”(h]”h ]”h"]”h$]”h&]”jKjLuh1j;h³hÊh´Khj ubhÒ)�”}”(hŒand::”h]”hŒand:”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj ubj<)�”}”(hŒCROSS_COMPILE=”h]”hŒCROSS_COMPILE=”…”�”}”hjwsbah}”(h]”h ]”h"]”h$]”h&]”jKjLuh1j;h³hÊh´K hj ubhÒ)�”}”(hŒto::”h]”hŒto:”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K"hj ubj<)�”}”(hŒ6CROSS_COMPILE=”h]”hŒ6CROSS_COMPILE=”…”�”}”hj“sbah}”(h]”h ]”h"]”h$]”h&]”jKjLuh1j;h³hÊh´K$hj ubhÒ)�”}”(hŒeg.::”h]”hŒeg.:”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K&hj ubj<)�”}”(hŒCROSS_COMPILE=arm-linux-”h]”hŒCROSS_COMPILE=arm-linux-”…”�”}”hj¯sbah}”(h]”h ]”h"]”h$]”h&]”jKjLuh1j;h³hÊh´K(hj ubhÒ)�”}”(hŒªDo a 'make config', followed by 'make Image' to build the kernel (arch/arm/boot/Image). A compressed image can be built by doing a 'make zImage' instead of 'make Image'.”h]”hŒºDo a ‘make config’, followed by ‘make Image’ to build the kernel (arch/arm/boot/Image). A compressed image can be built by doing a ‘make zImage’ instead of ‘make Image’.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K*hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hhüh²hubeh}”(h]”Œcompilation-of-kernel”ah ]”h"]”Œcompilation of kernel”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒBug reports etc”h]”hŒBug reports etc”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÙh²hh³hÊh´K0ubhÌ)�”}”(hXPlease send patches to the patch system. For more information, see http://www.arm.linux.org.uk/developer/patches/info.php Always include some explanation as to what the patch does and why it is needed. Bug reports should be sent to linux-arm-kernel@lists.arm.linux.org.uk, or submitted through the web form at http://www.arm.linux.org.uk/developer/ When sending bug reports, please ensure that they contain all relevant information, eg. the kernel messages that were printed before/during the problem, what you were doing, etc. ”h]”(hÒ)�”}”(hŒÊPlease send patches to the patch system. For more information, see http://www.arm.linux.org.uk/developer/patches/info.php Always include some explanation as to what the patch does and why it is needed.”h]”(hŒDPlease send patches to the patch system. For more information, see ”…”�”}”(hjîh²hh³Nh´NubhÜ)�”}”(hŒ6http://www.arm.linux.org.uk/developer/patches/info.php”h]”hŒ6http://www.arm.linux.org.uk/developer/patches/info.php”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jøuh1hÛhjîubhŒP Always include some explanation as to what the patch does and why it is needed.”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K2hjêubhÒ)�”}”(hŒ’Bug reports should be sent to linux-arm-kernel@lists.arm.linux.org.uk, or submitted through the web form at http://www.arm.linux.org.uk/developer/”h]”(hŒBug reports should be sent to ”…”�”}”(hjh²hh³Nh´NubhÜ)�”}”(hŒ'linux-arm-kernel@lists.arm.linux.org.uk”h]”hŒ'linux-arm-kernel@lists.arm.linux.org.uk”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ.mailto:linux-arm-kernel@lists.arm.linux.org.uk”uh1hÛhjubhŒ', or submitted through the web form at ”…”�”}”(hjh²hh³Nh´NubhÜ)�”}”(hŒ&http://www.arm.linux.org.uk/developer/”h]”hŒ&http://www.arm.linux.org.uk/developer/”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j-uh1hÛhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K6hjêubhÒ)�”}”(hŒ²When sending bug reports, please ensure that they contain all relevant information, eg. the kernel messages that were printed before/during the problem, what you were doing, etc.”h]”hŒ²When sending bug reports, please ensure that they contain all relevant information, eg. the kernel messages that were printed before/during the problem, what you were doing, etc.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K:hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K2hjÙh²hubeh}”(h]”Œbug-reports-etc”ah ]”h"]”Œbug reports etc”ah$]”h&]”uh1hµhh·h²hh³hÊh´K0ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Include files”h]”hŒ Include files”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj\h²hh³hÊh´K@ubhÌ)�”}”(hXxSeveral new include directories have been created under include/asm-arm, which are there to reduce the clutter in the top-level directory. These directories, and their purpose is listed below: ============= ========================================================== `arch-*` machine/platform specific header files `hardware` driver-internal ARM specific data structures/definitions `mach` descriptions of generic ARM to specific machine interfaces `proc-*` processor dependent header files (currently only two categories) ============= ========================================================== ”h]”(hÒ)�”}”(hŒÁSeveral new include directories have been created under include/asm-arm, which are there to reduce the clutter in the top-level directory. These directories, and their purpose is listed below:”h]”hŒÁSeveral new include directories have been created under include/asm-arm, which are there to reduce the clutter in the top-level directory. These directories, and their purpose is listed below:”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KBhjmubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j‰hj†ubjŠ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K:uh1j‰hj†ubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÒ)�”}”(hŒ`arch-*`”h]”hŒtitle_reference”“”)�”}”(hj°h]”hŒarch-*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KGhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj¦ubjª)�”}”(hhh]”hÒ)�”}”(hŒ&machine/platform specific header files”h]”hŒ&machine/platform specific header files”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KGhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤hj¡ubj¥)�”}”(hhh]”(jª)�”}”(hhh]”hÒ)�”}”(hŒ `hardware`”h]”j³)�”}”(hjòh]”hŒhardware”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KHhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjêubjª)�”}”(hhh]”hÒ)�”}”(hŒ8driver-internal ARM specific data structures/definitions”h]”hŒ8driver-internal ARM specific data structures/definitions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KHhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤hj¡ubj¥)�”}”(hhh]”(jª)�”}”(hhh]”hÒ)�”}”(hŒ`mach`”h]”j³)�”}”(hj2h]”hŒmach”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KIhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj*ubjª)�”}”(hhh]”hÒ)�”}”(hŒ:descriptions of generic ARM to specific machine interfaces”h]”hŒ:descriptions of generic ARM to specific machine interfaces”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KIhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤hj¡ubj¥)�”}”(hhh]”(jª)�”}”(hhh]”hÒ)�”}”(hŒ`proc-*`”h]”j³)�”}”(hjrh]”hŒproc-*”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KJhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjjubjª)�”}”(hhh]”hÒ)�”}”(hŒ@processor dependent header files (currently only two categories)”h]”hŒ@processor dependent header files (currently only two categories)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KJhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¤hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j„hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KBhj\h²hubeh}”(h]”Œ include-files”ah ]”h"]”Œ include files”ah$]”h&]”uh1hµhh·h²hh³hÊh´K@ubh¶)�”}”(hhh]”(h»)�”}”(hŒMachine/Platform support”h]”hŒMachine/Platform support”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjËh²hh³hÊh´KPubhÌ)�”}”(hXsThe ARM tree contains support for a lot of different machine types. To continue supporting these differences, it has become necessary to split machine-specific parts by directory. For this, the machine category is used to select which directories and files get included (we will use $(MACHINE) to refer to the category) To this end, we now have arch/arm/mach-$(MACHINE) directories which are designed to house the non-driver files for a particular machine (eg, PCI, memory management, architecture definitions etc). For all future machines, there should be a corresponding arch/arm/mach-$(MACHINE)/include/mach directory. ”h]”(hÒ)�”}”(hXAThe ARM tree contains support for a lot of different machine types. To continue supporting these differences, it has become necessary to split machine-specific parts by directory. For this, the machine category is used to select which directories and files get included (we will use $(MACHINE) to refer to the category)”h]”hXAThe ARM tree contains support for a lot of different machine types. To continue supporting these differences, it has become necessary to split machine-specific parts by directory. For this, the machine category is used to select which directories and files get included (we will use $(MACHINE) to refer to the category)”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KRhjÜubhÒ)�”}”(hX.To this end, we now have arch/arm/mach-$(MACHINE) directories which are designed to house the non-driver files for a particular machine (eg, PCI, memory management, architecture definitions etc). For all future machines, there should be a corresponding arch/arm/mach-$(MACHINE)/include/mach directory.”h]”hX.To this end, we now have arch/arm/mach-$(MACHINE) directories which are designed to house the non-driver files for a particular machine (eg, PCI, memory management, architecture definitions etc). For all future machines, there should be a corresponding arch/arm/mach-$(MACHINE)/include/mach directory.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KXhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KRhjËh²hubeh}”(h]”Œmachine-platform-support”ah ]”h"]”Œmachine/platform support”ah$]”h&]”uh1hµhh·h²hh³hÊh´KPubh¶)�”}”(hhh]”(h»)�”}”(hŒModules”h]”hŒModules”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K`ubhÌ)�”}”(hXÃAlthough modularisation is supported (and required for the FP emulator), each module on an ARM2/ARM250/ARM3 machine when is loaded will take memory up to the next 32k boundary due to the size of the pages. Therefore, is modularisation on these machines really worth it? However, ARM6 and up machines allow modules to take multiples of 4k, and as such Acorn RiscPCs and other architectures using these processors can make good use of modularisation. ”h]”(hÒ)�”}”(hX Although modularisation is supported (and required for the FP emulator), each module on an ARM2/ARM250/ARM3 machine when is loaded will take memory up to the next 32k boundary due to the size of the pages. Therefore, is modularisation on these machines really worth it?”h]”hX Although modularisation is supported (and required for the FP emulator), each module on an ARM2/ARM250/ARM3 machine when is loaded will take memory up to the next 32k boundary due to the size of the pages. Therefore, is modularisation on these machines really worth it?”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KbhjubhÒ)�”}”(hŒ²However, ARM6 and up machines allow modules to take multiples of 4k, and as such Acorn RiscPCs and other architectures using these processors can make good use of modularisation.”h]”hŒ²However, ARM6 and up machines allow modules to take multiples of 4k, and as such Acorn RiscPCs and other architectures using these processors can make good use of modularisation.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Kghjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kbhj h²hubeh}”(h]”Œmodules”ah ]”h"]”Œmodules”ah$]”h&]”uh1hµhh·h²hh³hÊh´K`ubh¶)�”}”(hhh]”(h»)�”}”(hŒADFS Image files”h]”hŒADFS Image files”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjIh²hh³hÊh´KmubhÌ)�”}”(hX1You can access image files on your ADFS partitions by mounting the ADFS partition, and then using the loopback device driver. You must have losetup installed. Please note that the PCEmulator DOS partitions have a partition table at the start, and as such, you will have to give '-o offset' to losetup. ”h]”(hÒ)�”}”(hŒŸYou can access image files on your ADFS partitions by mounting the ADFS partition, and then using the loopback device driver. You must have losetup installed.”h]”hŒŸYou can access image files on your ADFS partitions by mounting the ADFS partition, and then using the loopback device driver. You must have losetup installed.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KohjZubhÒ)�”}”(hŒŽPlease note that the PCEmulator DOS partitions have a partition table at the start, and as such, you will have to give '-o offset' to losetup.”h]”hŒ’Please note that the PCEmulator DOS partitions have a partition table at the start, and as such, you will have to give ‘-o offset’ to losetup.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KshjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KohjIh²hubeh}”(h]”Œadfs-image-files”ah ]”h"]”Œadfs image files”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kmubh¶)�”}”(hhh]”(h»)�”}”(hŒRequest to developers”h]”hŒRequest to developers”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjˆh²hh³hÊh´KxubhÌ)�”}”(hX–When writing device drivers which include a separate assembler file, please include it in with the C file, and not the arch/arm/lib directory. This allows the driver to be compiled as a loadable module without requiring half the code to be compiled into the kernel image. In general, try to avoid using assembler unless it is really necessary. It makes drivers far less easy to port to other hardware. ”h]”(hÒ)�”}”(hXWhen writing device drivers which include a separate assembler file, please include it in with the C file, and not the arch/arm/lib directory. This allows the driver to be compiled as a loadable module without requiring half the code to be compiled into the kernel image.”h]”hXWhen writing device drivers which include a separate assembler file, please include it in with the C file, and not the arch/arm/lib directory. This allows the driver to be compiled as a loadable module without requiring half the code to be compiled into the kernel image.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Kzhj™ubhÒ)�”}”(hŒ‚In general, try to avoid using assembler unless it is really necessary. It makes drivers far less easy to port to other hardware.”h]”hŒ‚In general, try to avoid using assembler unless it is really necessary. It makes drivers far less easy to port to other hardware.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Khj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kzhjˆh²hubeh}”(h]”Œrequest-to-developers”ah ]”h"]”Œrequest to developers”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kxubh¶)�”}”(hhh]”(h»)�”}”(hŒST506 hard drives”h]”hŒST506 hard drives”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÇh²hh³hÊh´K„ubhÌ)�”}”(hX2The ST506 hard drive controllers seem to be working fine (if a little slowly). At the moment they will only work off the controllers on an A4x0's motherboard, but for it to work off a Podule just requires someone with a podule to add the addresses for the IRQ mask and the HDC base to the source. As of 31/3/96 it works with two drives (you should get the ADFS `*configure` harddrive set to 2). I've got an internal 20MB and a great big external 5.25" FH 64MB drive (who could ever want more :-) ). I've just got 240K/s off it (a dd with bs=128k); that's about half of what RiscOS gets; but it's a heck of a lot better than the 50K/s I was getting last week :-) Known bug: Drive data errors can cause a hang; including cases where the controller has fixed the error using ECC. (Possibly ONLY in that case...hmm). ”h]”(hÒ)�”}”(hX)The ST506 hard drive controllers seem to be working fine (if a little slowly). At the moment they will only work off the controllers on an A4x0's motherboard, but for it to work off a Podule just requires someone with a podule to add the addresses for the IRQ mask and the HDC base to the source.”h]”hX+The ST506 hard drive controllers seem to be working fine (if a little slowly). At the moment they will only work off the controllers on an A4x0’s motherboard, but for it to work off a Podule just requires someone with a podule to add the addresses for the IRQ mask and the HDC base to the source.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K†hjØubhÒ)�”}”(hŒÉAs of 31/3/96 it works with two drives (you should get the ADFS `*configure` harddrive set to 2). I've got an internal 20MB and a great big external 5.25" FH 64MB drive (who could ever want more :-) ).”h]”(hŒ@As of 31/3/96 it works with two drives (you should get the ADFS ”…”�”}”(hjêh²hh³Nh´Nubj³)�”}”(hŒ `*configure`”h]”hŒ *configure”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjêubhŒ� harddrive set to 2). I’ve got an internal 20MB and a great big external 5.25â€� FH 64MB drive (who could ever want more :-) ).”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KŒhjØubhÒ)�”}”(hŒ¢I've just got 240K/s off it (a dd with bs=128k); that's about half of what RiscOS gets; but it's a heck of a lot better than the 50K/s I was getting last week :-)”h]”hŒ¨I’ve just got 240K/s off it (a dd with bs=128k); that’s about half of what RiscOS gets; but it’s a heck of a lot better than the 50K/s I was getting last week :-)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K�hjØubhÒ)�”}”(hŒ–Known bug: Drive data errors can cause a hang; including cases where the controller has fixed the error using ECC. (Possibly ONLY in that case...hmm).”h]”hŒ–Known bug: Drive data errors can cause a hang; including cases where the controller has fixed the error using ECC. (Possibly ONLY in that case...hmm).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K”hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K†hjÇh²hubeh}”(h]”Œst506-hard-drives”ah ]”h"]”Œst506 hard drives”ah$]”h&]”uh1hµhh·h²hh³hÊh´K„ubh¶)�”}”(hhh]”(h»)�”}”(hŒ 1772 Floppy”h]”hŒ 1772 Floppy”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj4h²hh³hÊh´KšubhÌ)�”}”(hŒçThis also seems to work OK, but hasn't been stressed much lately. It hasn't got any code for disc change detection in there at the moment which could be a bit of a problem! Suggestions on the correct way to do this are welcome. ”h]”hÒ)�”}”(hŒåThis also seems to work OK, but hasn't been stressed much lately. It hasn't got any code for disc change detection in there at the moment which could be a bit of a problem! Suggestions on the correct way to do this are welcome.”h]”hŒéThis also seems to work OK, but hasn’t been stressed much lately. It hasn’t got any code for disc change detection in there at the moment which could be a bit of a problem! Suggestions on the correct way to do this are welcome.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K›hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K›hj4h²hubeh}”(h]”Œfloppy”ah ]”h"]”Œ 1772 floppy”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kšubh¶)�”}”(hhh]”(h»)�”}”(hŒ!`CONFIG_MACH_` and `CONFIG_ARCH_`”h]”(j³)�”}”(hŒ`CONFIG_MACH_`”h]”hŒ CONFIG_MACH_”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjhubhŒ and ”…”�”}”(hjhh²hh³Nh´Nubj³)�”}”(hŒ`CONFIG_ARCH_`”h]”hŒ CONFIG_ARCH_”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1hºhjeh²hh³hÊh´K¢ubhÌ)�”}”(hXàA change was made in 2003 to the macro names for new machines. Historically, `CONFIG_ARCH_` was used for the bonafide architecture, e.g. SA1100, as well as implementations of the architecture, e.g. Assabet. It was decided to change the implementation macros to read `CONFIG_MACH_` for clarity. Moreover, a retroactive fixup has not been made because it would complicate patching. Previous registrations may be found online. ”h]”(hÒ)�”}”(hX}A change was made in 2003 to the macro names for new machines. Historically, `CONFIG_ARCH_` was used for the bonafide architecture, e.g. SA1100, as well as implementations of the architecture, e.g. Assabet. It was decided to change the implementation macros to read `CONFIG_MACH_` for clarity. Moreover, a retroactive fixup has not been made because it would complicate patching.”h]”(hŒMA change was made in 2003 to the macro names for new machines. Historically, ”…”�”}”(hj–h²hh³Nh´Nubj³)�”}”(hŒ`CONFIG_ARCH_`”h]”hŒ CONFIG_ARCH_”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj–ubhŒ° was used for the bonafide architecture, e.g. SA1100, as well as implementations of the architecture, e.g. Assabet. It was decided to change the implementation macros to read ”…”�”}”(hj–h²hh³Nh´Nubj³)�”}”(hŒ`CONFIG_MACH_`”h]”hŒ CONFIG_MACH_”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj–ubhŒd for clarity. Moreover, a retroactive fixup has not been made because it would complicate patching.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K£hj’ubhÒ)�”}”(hŒ+Previous registrations may be found online.”h]”hŒ+Previous registrations may be found online.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´Kªhj’ubhÌ)�”}”(hŒ2 ”h]”hÒ)�”}”(hŒ1”h]”(hŒ<”…”�”}”(hjÚh²hh³Nh´NubhÜ)�”}”(hŒ/http://www.arm.linux.org.uk/developer/machines/”h]”hŒ/http://www.arm.linux.org.uk/developer/machines/”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jäuh1hÛhjÚubhŒ>”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K¬hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¬hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K£hjeh²hubeh}”(h]”Œconfig-mach-and-config-arch”ah ]”h"]”Œconfig_mach_ and config_arch_”ah$]”h&]”uh1hµhh·h²hh³hÊh´K¢ubh¶)�”}”(hhh]”(h»)�”}”(hŒKernel entry (head.S)”h]”hŒKernel entry (head.S)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K¯ubhÌ)�”}”(hXyThe initial entry into the kernel is via head.S, which uses machine independent code. The machine is selected by the value of 'r1' on entry, which must be kept unique. Due to the large number of machines which the ARM port of Linux provides for, we have a method to manage this which ensures that we don't end up duplicating large amounts of code. We group machine (or platform) support code into machine classes. A class typically based around one or more system on a chip devices, and acts as a natural container around the actual implementations. These classes are given directories - arch/arm/mach- - which contain the source files and include/mach/ to support the machine class. For example, the SA1100 class is based upon the SA1100 and SA1110 SoC devices, and contains the code to support the way the on-board and off- board devices are used, or the device is setup, and provides that machine specific "personality." For platforms that support device tree (DT), the machine selection is controlled at runtime by passing the device tree blob to the kernel. At compile-time, support for the machine type must be selected. This allows for a single multiplatform kernel build to be used for several machine types. For platforms that do not use device tree, this machine selection is controlled by the machine type ID, which acts both as a run-time and a compile-time code selection method. You can register a new machine via the web site at: Note: Please do not register a machine type for DT-only platforms. If your platform is DT-only, you do not need a registered machine type. ”h]”(hÒ)�”}”(hŒ¨The initial entry into the kernel is via head.S, which uses machine independent code. The machine is selected by the value of 'r1' on entry, which must be kept unique.”h]”hŒ¬The initial entry into the kernel is via head.S, which uses machine independent code. The machine is selected by the value of ‘r1’ on entry, which must be kept unique.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K°hj ubhÒ)�”}”(hŒ³Due to the large number of machines which the ARM port of Linux provides for, we have a method to manage this which ensures that we don't end up duplicating large amounts of code.”h]”hŒµDue to the large number of machines which the ARM port of Linux provides for, we have a method to manage this which ensures that we don’t end up duplicating large amounts of code.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K´hj ubhÒ)�”}”(hXXWe group machine (or platform) support code into machine classes. A class typically based around one or more system on a chip devices, and acts as a natural container around the actual implementations. These classes are given directories - arch/arm/mach- - which contain the source files and include/mach/ to support the machine class.”h]”hXXWe group machine (or platform) support code into machine classes. A class typically based around one or more system on a chip devices, and acts as a natural container around the actual implementations. These classes are given directories - arch/arm/mach- - which contain the source files and include/mach/ to support the machine class.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K¸hj ubhÒ)�”}”(hŒïFor example, the SA1100 class is based upon the SA1100 and SA1110 SoC devices, and contains the code to support the way the on-board and off- board devices are used, or the device is setup, and provides that machine specific "personality."”h]”hŒóFor example, the SA1100 class is based upon the SA1100 and SA1110 SoC devices, and contains the code to support the way the on-board and off- board devices are used, or the device is setup, and provides that machine specific “personality.â€�”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´K¾hj ubhÒ)�”}”(hX&For platforms that support device tree (DT), the machine selection is controlled at runtime by passing the device tree blob to the kernel. At compile-time, support for the machine type must be selected. This allows for a single multiplatform kernel build to be used for several machine types.”h]”hX&For platforms that support device tree (DT), the machine selection is controlled at runtime by passing the device tree blob to the kernel. At compile-time, support for the machine type must be selected. This allows for a single multiplatform kernel build to be used for several machine types.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KÃhj ubhÒ)�”}”(hŒäFor platforms that do not use device tree, this machine selection is controlled by the machine type ID, which acts both as a run-time and a compile-time code selection method. You can register a new machine via the web site at:”h]”hŒäFor platforms that do not use device tree, this machine selection is controlled by the machine type ID, which acts both as a run-time and a compile-time code selection method. You can register a new machine via the web site at:”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KÈhj ubhÌ)�”}”(hŒ2 ”h]”hÒ)�”}”(hŒ1”h]”(hŒ<”…”�”}”(hj|h²hh³Nh´NubhÜ)�”}”(hŒ/http://www.arm.linux.org.uk/developer/machines/”h]”hŒ/http://www.arm.linux.org.uk/developer/machines/”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j†uh1hÛhj|ubhŒ>”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KÍhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KÍhj ubhÒ)�”}”(hŒ‹Note: Please do not register a machine type for DT-only platforms. If your platform is DT-only, you do not need a registered machine type.”h]”hŒ‹Note: Please do not register a machine type for DT-only platforms. If your platform is DT-only, you do not need a registered machine type.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KÏhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K°hjh²hubhÒ)�”}”(hŒ---”h]”hŒ---”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KÒhjh²hubhÒ)�”}”(hŒRussell King (15/03/2004)”h]”hŒRussell King (15/03/2004)”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑh³hÊh´KÔhjh²hubeh}”(h]”Œkernel-entry-head-s”ah ]”h"]”Œkernel entry (head.s)”ah$]”h&]”uh1hµhh·h²hh³hÊh´K¯ubeh}”(h]”Œarm-linux-2-6-and-upper”ah ]”h"]”Œarm linux 2.6 and upper”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”j©Œ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àjÝjÖjÓjYjVjÈjÅjjjFjCj…j‚jÄjÁj1j.jbj_j j jØjÕuŒ nametypes”}”(jà‰jÖ‰jY‰jȉj‰jF‰j…‰jĉj1‰jb‰j ‰j؉uh}”(jÝh·jÓhüjVjÙjÅj\jjËjCj j‚jIjÁjˆj.jÇj_j4j jejÕjuŒ 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.