Commit | Line | Data |
---|---|---|
587064b6 PA |
1 | The arm64 port of the Linux kernel provides infrastructure to support |
2 | emulation of instructions which have been deprecated, or obsoleted in | |
3 | the architecture. The infrastructure code uses undefined instruction | |
4 | hooks to support emulation. Where available it also allows turning on | |
5 | the instruction execution in hardware. | |
6 | ||
7 | The emulation mode can be controlled by writing to sysctl nodes | |
8 | (/proc/sys/abi). The following explains the different execution | |
9 | behaviours and the corresponding values of the sysctl nodes - | |
10 | ||
11 | * Undef | |
12 | Value: 0 | |
13 | Generates undefined instruction abort. Default for instructions that | |
14 | have been obsoleted in the architecture, e.g., SWP | |
15 | ||
16 | * Emulate | |
17 | Value: 1 | |
18 | Uses software emulation. To aid migration of software, in this mode | |
19 | usage of emulated instruction is traced as well as rate limited | |
20 | warnings are issued. This is the default for deprecated | |
21 | instructions, .e.g., CP15 barriers | |
22 | ||
23 | * Hardware Execution | |
24 | Value: 2 | |
25 | Although marked as deprecated, some implementations may support the | |
26 | enabling/disabling of hardware support for the execution of these | |
27 | instructions. Using hardware execution generally provides better | |
28 | performance, but at the loss of ability to gather runtime statistics | |
29 | about the use of the deprecated instructions. | |
30 | ||
31 | The default mode depends on the status of the instruction in the | |
32 | architecture. Deprecated instructions should default to emulation | |
33 | while obsolete instructions must be undefined by default. | |
bd35a4ad | 34 | |
2d888f48 SP |
35 | Note: Instruction emulation may not be possible in all cases. See |
36 | individual instruction notes for further information. | |
37 | ||
bd35a4ad PA |
38 | Supported legacy instructions |
39 | ----------------------------- | |
40 | * SWP{B} | |
41 | Node: /proc/sys/abi/swp | |
42 | Status: Obsolete | |
43 | Default: Undef (0) | |
c852f320 PA |
44 | |
45 | * CP15 Barriers | |
46 | Node: /proc/sys/abi/cp15_barrier | |
47 | Status: Deprecated | |
48 | Default: Emulate (1) | |
2d888f48 SP |
49 | |
50 | * SETEND | |
51 | Node: /proc/sys/abi/setend | |
52 | Status: Deprecated | |
53 | Default: Emulate (1)* | |
54 | Note: All the cpus on the system must have mixed endian support at EL0 | |
55 | for this feature to be enabled. If a new CPU - which doesn't support mixed | |
56 | endian - is hotplugged in after this feature has been enabled, there could | |
57 | be unexpected results in the application. |