[lkml]   [2018]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH v3 0/7] x86/entry: simplify and unify SAVE/POP_REGS
The starting point for this series was the intention to interleave
the register clearing with register PUSH or MOV instructions, in order
to minimize the cost of the additional instructions required for the
register clearing. While at it, I noticed that a couple of macros in
arch/x86/entry/calling.h are unused and can be cleaned up.

Based on a preliminary version of this patch,[1] Linus suggested to
merge further codepaths and to use PUSH instead of MOV, as this should
be faster on newer CPUs.

Those who are worried about the increase in text size will find a
patch 8/7 which, based on a suggestion by Liunus, plays some trickery to
move PUSH_AND_CLEAR_REGS from the idtentry macro to the error_entry and
paranoid_entry functions. As things stand, this patch is not meant for
inclusion upstream, as it is unclear whether this additional trickery is
really worth the effort.

Changes since v2:[2]
- update commit message to patch 6/7 to include an explanation by
Ingo Molnar on why we should not be worried too much about the increase
in text size
- fix objtool warning introduced in patch 6/7
- unwind hint improvements []
- add testing-only patch 8/7

Changes since v1:[1]
- complete rework

[1] and


NOTE / WARNING: Please be *extremely* stringent in reviewing these
patches, *especially* concerning patch 6/7 (x86/entry: get rid of

Dominik Brodowski (7):
x86/entry: merge SAVE_C_REGS and SAVE_EXTRA_REGS, remove unused
x86/entry: merge POP_C_REGS and POP_EXTRA_REGS
x86/entry: interleave XOR register clearing with PUSH instructions
x86/entry: introduce PUSH_AND_CLEAN_REGS
x86/entry: use PUSH_AND_CLEAN_REGS in more cases
x86/entry: indent PUSH_AND_CLEAR_REGS and POP_REGS properly

arch/x86/entry/calling.h | 118 ++++++++++++++++++----------------------------
arch/x86/entry/entry_64.S | 109 +++++++-----------------------------------
2 files changed, 64 insertions(+), 163 deletions(-)


 \ /
  Last update: 2018-02-11 11:51    [W:0.186 / U:0.076 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site