| 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. | 
 |  | 
 | 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 - | 
 |  | 
 | * Undef | 
 |   Value: 0 | 
 |   Generates undefined instruction abort. Default for instructions that | 
 |   have been obsoleted in the architecture, e.g., SWP | 
 |  | 
 | * 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 | 
 |  | 
 | * Hardware 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. | 
 |  | 
 | 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. | 
 |  | 
 | Note: Instruction emulation may not be possible in all cases. See | 
 | individual instruction notes for further information. | 
 |  | 
 | Supported legacy instructions | 
 | ----------------------------- | 
 | * SWP{B} | 
 | Node: /proc/sys/abi/swp | 
 | Status: Obsolete | 
 | Default: Undef (0) | 
 |  | 
 | * CP15 Barriers | 
 | Node: /proc/sys/abi/cp15_barrier | 
 | Status: Deprecated | 
 | Default: Emulate (1) | 
 |  | 
 | * SETEND | 
 | Node: /proc/sys/abi/setend | 
 | Status: Deprecated | 
 | Default: Emulate (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. |