endbr64

End Branch 64-bit

ENDBR64

Marker instruction for Indirect Branch Tracking (IBT).

Details

End Branch 64-bit marker for Control Flow Enforcement Technology (CET) Indirect Branch Tracking. This is a NOP-like instruction that marks valid target points for indirect branches in 64-bit mode; it is consumed by hardware when CET-IBT is enabled and causes a control-flow exception (#CP) if an indirect branch lands on a non-ENDBR64/ENDBR32 location. No flags are affected. Requires CET-IBT capability.

Pseudocode Operation

// Marker instruction for Indirect Branch Tracking (IBT)

Example

ENDBR64

Encoding

Binary Layout
F3
+0
0F
+1
1E
+2
FA
+3
 
Format Legacy
Opcode F3 0F 1E FA
Extension CET-IBT

Operands

Reference (Intel® SDM)

Instruction Forms

Opcode Instruction Op/En 64/32-bit Mode CPUID Description
F3 0F 1E FA ENDBR64 ZO V/V CET_IBT Terminate indirect branch in 64-bit mode.

Description

Terminate an indirect branch in 64 bit mode. This opcode is a NOP when CET indirect branch tracking is not enabled and on processors that do not support CET.

Operation

IF EndbranchEnabled(CPL) & IA32_EFER.LMA = 1 & CS.L = 1
IF CPL = 3
THEN
IA32_U_CET.TRACKER = IDLE
IA32_U_CET.SUPPRESS = 0
ELSE
IA32_S_CET.TRACKER = IDLE
IA32_S_CET.SUPPRESS = 0
FI;
FI;

Flags Affected

None. Exceptions #UD If the LOCK prefix is used. ENDBR64—Terminate an Indirect Branch in 64-bit Mode Vol. 2A 3-288