2014-11-18 12:41:24 +01:00
|
|
|
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.
|
2014-11-18 12:41:25 +01:00
|
|
|
|
|
|
|
Supported legacy instructions
|
|
|
|
-----------------------------
|
|
|
|
* SWP{B}
|
|
|
|
Node: /proc/sys/abi/swp
|
|
|
|
Status: Obsolete
|
|
|
|
Default: Undef (0)
|