[all-commits] [llvm/llvm-project] 7049cf: [BranchAlign] Fix bug w/nop padding for SS manipul...

Philip Reames via All-commits all-commits at lists.llvm.org
Mon Mar 2 14:40:29 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7049cf6496c9aa8e355345a3fbea30861e4d2da8
      https://github.com/llvm/llvm-project/commit/7049cf6496c9aa8e355345a3fbea30861e4d2da8
  Author: Philip Reames <listmail at philipreames.com>
  Date:   2020-03-02 (Mon, 02 Mar 2020)

  Changed paths:
    M llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
    A llvm/test/MC/X86/align-branch-64-system.s

  Log Message:
  -----------
  [BranchAlign] Fix bug w/nop padding for SS manipulation

X86 has several instructions which are documented as enabling interrupts exactly one instruction *after* the one which changes the SS segment register. Inserting a nop between these two instructions allows an interrupt to arrive before the execution of the following instruction which changes semantic behaviour.

The list of instructions is documented in "Table 24-3. Format of Interruptibility State" in Volume 3c of the Intel manual. They basically all come down to different ways to write to the SS register.

Differential Revision: https://reviews.llvm.org/D75359




More information about the All-commits mailing list