58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 |