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