mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.2 KiB
68 lines
2.2 KiB
=================== |
|
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.
|
|
|