e4624435f3
Architecture-specific documentation is being moved into Documentation/arch/ as a way of cleaning up the top-level documentation directory and making the docs hierarchy more closely match the source hierarchy. Move Documentation/arm64 into arch/ (along with the Chinese equvalent translations) and fix up documentation references. Cc: Will Deacon <will@kernel.org> Cc: Alex Shi <alexs@kernel.org> Cc: Hu Haowen <src.res@email.cn> Cc: Paolo Bonzini <pbonzini@redhat.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Yantengsi <siyanteng@loongson.cn> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
69 lines
2.2 KiB
ReStructuredText
69 lines
2.2 KiB
ReStructuredText
===================
|
|
Legacy instructions
|
|
===================
|
|
|
|
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.
|