€•ì=Œ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”Œ2/translations/zh_CN/arch/arm64/legacy_instructions”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/zh_TW/arch/arm64/legacy_instructions”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/it_IT/arch/arm64/legacy_instructions”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/ja_JP/arch/arm64/legacy_instructions”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/ko_KR/arch/arm64/legacy_instructions”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/pt_BR/arch/arm64/legacy_instructions”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/sp_SP/arch/arm64/legacy_instructions”Œ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ŒLegacy instructions”h]”hŒLegacy instructions”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒL/var/lib/git/docbuild/linux/Documentation/arch/arm64/legacy_instructions.rst”h´KubhŒ paragraph”“”)”}”(hX=The arm64 port of the Linux kernel provides infrastructure to support emulation of instructions which have been deprecated, or obsoleted in the architecture. The infrastructure code uses undefined instruction hooks to support emulation. Where available it also allows turning on the instruction execution in hardware.”h]”hX=The arm64 port of the Linux kernel provides infrastructure to support emulation of instructions which have been deprecated, or obsoleted in the architecture. The infrastructure code uses undefined instruction hooks to support emulation. Where available it also allows turning on the instruction execution in hardware.”…””}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hŒ½The emulation mode can be controlled by writing to sysctl nodes (/proc/sys/abi). The following explains the different execution behaviours and the corresponding values of the sysctl nodes -”h]”hŒ½The emulation mode can be controlled by writing to sysctl nodes (/proc/sys/abi). The following explains the different execution behaviours and the corresponding values of the sysctl nodes -”…””}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒŠUndef Value: 0 Generates undefined instruction abort. Default for instructions that have been obsoleted in the architecture, e.g., SWP ”h]”(hŒdefinition_list”“”)”}”(hhh]”hŒdefinition_list_item”“”)”}”(hŒUndef Value: 0 ”h]”(hŒterm”“”)”}”(hŒUndef”h]”hŒUndef”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÊh´KhhûubhŒ definition”“”)”}”(hhh]”hÌ)”}”(hŒValue: 0”h]”hŒValue: 0”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhûubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùh³hÊh´Khhöubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhhðubhÌ)”}”(hŒwGenerates undefined instruction abort. Default for instructions that have been obsoleted in the architecture, e.g., SWP”h]”hŒwGenerates undefined instruction abort. Default for instructions that have been obsoleted in the architecture, e.g., SWP”…””}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhðubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîhhëh²hh³hÊh´Nubhï)”}”(hŒóEmulate Value: 1 Uses software emulation. To aid migration of software, in this mode usage of emulated instruction is traced as well as rate limited warnings are issued. This is the default for deprecated instructions, .e.g., CP15 barriers ”h]”(hõ)”}”(hhh]”hú)”}”(hŒEmulate Value: 1 ”h]”(j)”}”(hŒEmulate”h]”hŒEmulate”…””}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÊh´KhjOubj)”}”(hhh]”hÌ)”}”(hŒValue: 1”h]”hŒValue: 1”…””}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùh³hÊh´KhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhjHubhÌ)”}”(hŒÞUses software emulation. To aid migration of software, in this mode usage of emulated instruction is traced as well as rate limited warnings are issued. This is the default for deprecated instructions, .e.g., CP15 barriers”h]”hŒÞUses software emulation. To aid migration of software, in this mode usage of emulated instruction is traced as well as rate limited warnings are issued. This is the default for deprecated instructions, .e.g., CP15 barriers”…””}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîhhëh²hh³hÊh´Nubhï)”}”(hXYHardware Execution Value: 2 Although marked as deprecated, some implementations may support the enabling/disabling of hardware support for the execution of these instructions. Using hardware execution generally provides better performance, but at the loss of ability to gather runtime statistics about the use of the deprecated instructions. ”h]”(hõ)”}”(hhh]”hú)”}”(hŒHardware Execution Value: 2 ”h]”(j)”}”(hŒHardware Execution”h]”hŒHardware Execution”…””}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÊh´KhjŸubj)”}”(hhh]”hÌ)”}”(hŒValue: 2”h]”hŒValue: 2”…””}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùh³hÊh´Khjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhj˜ubhÌ)”}”(hX9Although marked as deprecated, some implementations may support the enabling/disabling of hardware support for the execution of these instructions. Using hardware execution generally provides better performance, but at the loss of ability to gather runtime statistics about the use of the deprecated instructions.”h]”hX9Although marked as deprecated, some implementations may support the enabling/disabling of hardware support for the execution of these instructions. Using hardware execution generally provides better performance, but at the loss of ability to gather runtime statistics about the use of the deprecated instructions.”…””}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîhhëh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1héh³hÊh´Khh·h²hubhÌ)”}”(hŒ¼The default mode depends on the status of the instruction in the architecture. Deprecated instructions should default to emulation while obsolete instructions must be undefined by default.”h]”hŒ¼The default mode depends on the status of the instruction in the architecture. Deprecated instructions should default to emulation while obsolete instructions must be undefined by default.”…””}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K&hh·h²hubhÌ)”}”(hŒwNote: Instruction emulation may not be possible in all cases. See individual instruction notes for further information.”h]”hŒwNote: Instruction emulation may not be possible in all cases. See individual instruction notes for further information.”…””}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K*hh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒSupported legacy instructions”h]”hŒSupported legacy instructions”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K.ubhê)”}”(hhh]”hï)”}”(hŒSWP{B} ”h]”hÌ)”}”(hŒSWP{B}”h]”hŒSWP{B}”…””}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K/hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”jîjïuh1héh³hÊh´K/hj h²hubhŒ field_list”“”)”}”(hhh]”(hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒNode”h]”hŒNode”…””}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjEh³hÊh´KubhŒ field_body”“”)”}”(hŒ/proc/sys/abi/swp”h]”hÌ)”}”(hj\h]”hŒ/proc/sys/abi/swp”…””}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K1hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K1hj@h²hubjD)”}”(hhh]”(jI)”}”(hŒStatus”h]”hŒStatus”…””}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjwh³hÊh´KubjY)”}”(hŒObsolete”h]”hÌ)”}”(hjŠh]”hŒObsolete”…””}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K2hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K2hj@h²hubjD)”}”(hhh]”(jI)”}”(hŒDefault”h]”hŒDefault”…””}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhj¥h³hÊh´KubjY)”}”(hŒ Undef (0) ”h]”hÌ)”}”(hŒ Undef (0)”h]”hŒ Undef (0)”…””}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K3hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K3hj@h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j>hj h²hh³hÊh´K1ubhê)”}”(hhh]”hï)”}”(hŒCP15 Barriers ”h]”hÌ)”}”(hŒ CP15 Barriers”h]”hŒ CP15 Barriers”…””}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K5hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjÚh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”jîjïuh1héh³hÊh´K5hj h²hubj?)”}”(hhh]”(jD)”}”(hhh]”(jI)”}”(hŒNode”h]”hŒNode”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjþh³hÊh´KubjY)”}”(hŒ/proc/sys/abi/cp15_barrier”h]”hÌ)”}”(hjh]”hŒ/proc/sys/abi/cp15_barrier”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K7hjûh²hubjD)”}”(hhh]”(jI)”}”(hŒStatus”h]”hŒStatus”…””}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhj,h³hÊh´KubjY)”}”(hŒ Deprecated”h]”hÌ)”}”(hj?h]”hŒ Deprecated”…””}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K8hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K8hjûh²hubjD)”}”(hhh]”(jI)”}”(hŒDefault”h]”hŒDefault”…””}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjZh³hÊh´KubjY)”}”(hŒ Emulate (1) ”h]”hÌ)”}”(hŒ Emulate (1)”h]”hŒ Emulate (1)”…””}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K9hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K9hjûh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j>hj h²hh³hÊh´K7ubhê)”}”(hhh]”hï)”}”(hŒSETEND ”h]”hÌ)”}”(hŒSETEND”h]”hŒSETEND”…””}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K;hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”jîjïuh1héh³hÊh´K;hj h²hubj?)”}”(hhh]”(jD)”}”(hhh]”(jI)”}”(hŒNode”h]”hŒNode”…””}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhj³h³hÊh´KubjY)”}”(hŒ/proc/sys/abi/setend”h]”hÌ)”}”(hjÆh]”hŒ/proc/sys/abi/setend”…””}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K=hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K=hj°h²hubjD)”}”(hhh]”(jI)”}”(hŒStatus”h]”hŒStatus”…””}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjáh³hÊh´KubjY)”}”(hŒ Deprecated”h]”hÌ)”}”(hjôh]”hŒ Deprecated”…””}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K>hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K>hj°h²hubjD)”}”(hhh]”(jI)”}”(hŒDefault”h]”hŒDefault”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjh³hÊh´KubjY)”}”(hXEmulate (1)* Note: All the cpus on the system must have mixed endian support at EL0 for this feature to be enabled. If a new CPU - which doesn't support mixed endian - is hotplugged in after this feature has been enabled, there could be unexpected results in the application.”h]”(hÌ)”}”(hŒ Emulate (1)*”h]”hŒ Emulate (1)*”…””}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K?hj ubhÌ)”}”(hXNote: All the cpus on the system must have mixed endian support at EL0 for this feature to be enabled. If a new CPU - which doesn't support mixed endian - is hotplugged in after this feature has been enabled, there could be unexpected results in the application.”h]”hXNote: All the cpus on the system must have mixed endian support at EL0 for this feature to be enabled. If a new CPU - which doesn’t support mixed endian - is hotplugged in after this feature has been enabled, there could be unexpected results in the application.”…””}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KAhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jXhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jCh³hÊh´K?hj°h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j>hj h²hh³hÊh´K=ubeh}”(h]”Œsupported-legacy-instructions”ah ]”h"]”Œsupported legacy instructions”ah$]”h&]”uh1hµhh·h²hh³hÊh´K.ubeh}”(h]”Œlegacy-instructions”ah ]”h"]”Œlegacy instructions”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”Œentry”Œ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\jWjTuŒ nametypes”}”(j_‰jW‰uh}”(j\h·jTj uŒ 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.