diff options
Diffstat (limited to 'arch/x86/entry/calling.h')
-rw-r--r-- | arch/x86/entry/calling.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h index 3c71dd947c7b..e32206e09868 100644 --- a/arch/x86/entry/calling.h +++ b/arch/x86/entry/calling.h | |||
@@ -1,3 +1,5 @@ | |||
1 | #include <linux/jump_label.h> | ||
2 | |||
1 | /* | 3 | /* |
2 | 4 | ||
3 | x86 function call convention, 64-bit: | 5 | x86 function call convention, 64-bit: |
@@ -232,3 +234,16 @@ For 32-bit we have the following conventions - kernel is built with | |||
232 | 234 | ||
233 | #endif /* CONFIG_X86_64 */ | 235 | #endif /* CONFIG_X86_64 */ |
234 | 236 | ||
237 | /* | ||
238 | * This does 'call enter_from_user_mode' unless we can avoid it based on | ||
239 | * kernel config or using the static jump infrastructure. | ||
240 | */ | ||
241 | .macro CALL_enter_from_user_mode | ||
242 | #ifdef CONFIG_CONTEXT_TRACKING | ||
243 | #ifdef HAVE_JUMP_LABEL | ||
244 | STATIC_JUMP_IF_FALSE .Lafter_call_\@, context_tracking_enabled, def=0 | ||
245 | #endif | ||
246 | call enter_from_user_mode | ||
247 | .Lafter_call_\@: | ||
248 | #endif | ||
249 | .endm | ||