69 lines · plain
1===================2Legacy instructions3===================4 5The arm64 port of the Linux kernel provides infrastructure to support6emulation of instructions which have been deprecated, or obsoleted in7the architecture. The infrastructure code uses undefined instruction8hooks to support emulation. Where available it also allows turning on9the instruction execution in hardware.10 11The emulation mode can be controlled by writing to sysctl nodes12(/proc/sys/abi). The following explains the different execution13behaviours and the corresponding values of the sysctl nodes -14 15* Undef16 Value: 017 18 Generates undefined instruction abort. Default for instructions that19 have been obsoleted in the architecture, e.g., SWP20 21* Emulate22 Value: 123 24 Uses software emulation. To aid migration of software, in this mode25 usage of emulated instruction is traced as well as rate limited26 warnings are issued. This is the default for deprecated27 instructions, .e.g., CP15 barriers28 29* Hardware Execution30 Value: 231 32 Although marked as deprecated, some implementations may support the33 enabling/disabling of hardware support for the execution of these34 instructions. Using hardware execution generally provides better35 performance, but at the loss of ability to gather runtime statistics36 about the use of the deprecated instructions.37 38The default mode depends on the status of the instruction in the39architecture. Deprecated instructions should default to emulation40while obsolete instructions must be undefined by default.41 42Note: Instruction emulation may not be possible in all cases. See43individual instruction notes for further information.44 45Supported legacy instructions46-----------------------------47* SWP{B}48 49:Node: /proc/sys/abi/swp50:Status: Obsolete51:Default: Undef (0)52 53* CP15 Barriers54 55:Node: /proc/sys/abi/cp15_barrier56:Status: Deprecated57:Default: Emulate (1)58 59* SETEND60 61:Node: /proc/sys/abi/setend62:Status: Deprecated63:Default: Emulate (1)*64 65 Note: All the cpus on the system must have mixed endian support at EL066 for this feature to be enabled. If a new CPU - which doesn't support mixed67 endian - is hotplugged in after this feature has been enabled, there could68 be unexpected results in the application.69