.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* |
---|
2 | 3 | * Save registers before calling assembly functions. This avoids |
---|
3 | 4 | * disturbance of register allocation in some inline assembly constructs. |
---|
4 | 5 | * Copyright 2001,2002 by Andi Kleen, SuSE Labs. |
---|
5 | | - * Added trace_hardirqs callers - Copyright 2007 Steven Rostedt, Red Hat, Inc. |
---|
6 | | - * Subject to the GNU public license, v.2. No warranty of any kind. |
---|
7 | 6 | */ |
---|
8 | 7 | #include <linux/linkage.h> |
---|
9 | 8 | #include "calling.h" |
---|
.. | .. |
---|
12 | 11 | |
---|
13 | 12 | /* rdi: arg1 ... normal C conventions. rax is saved/restored. */ |
---|
14 | 13 | .macro THUNK name, func, put_ret_addr_in_rdi=0 |
---|
15 | | - .globl \name |
---|
16 | | - .type \name, @function |
---|
17 | | -\name: |
---|
| 14 | +SYM_FUNC_START_NOALIGN(\name) |
---|
18 | 15 | pushq %rbp |
---|
19 | 16 | movq %rsp, %rbp |
---|
20 | 17 | |
---|
.. | .. |
---|
34 | 31 | .endif |
---|
35 | 32 | |
---|
36 | 33 | call \func |
---|
37 | | - jmp .L_restore |
---|
| 34 | + jmp __thunk_restore |
---|
| 35 | +SYM_FUNC_END(\name) |
---|
38 | 36 | _ASM_NOKPROBE(\name) |
---|
39 | 37 | .endm |
---|
40 | 38 | |
---|
41 | | -#ifdef CONFIG_TRACE_IRQFLAGS |
---|
42 | | - THUNK trace_hardirqs_on_thunk,trace_hardirqs_on_caller,1 |
---|
43 | | - THUNK trace_hardirqs_off_thunk,trace_hardirqs_off_caller,1 |
---|
44 | | -#endif |
---|
| 39 | + THUNK preempt_schedule_thunk, preempt_schedule |
---|
| 40 | + THUNK preempt_schedule_notrace_thunk, preempt_schedule_notrace |
---|
| 41 | + EXPORT_SYMBOL(preempt_schedule_thunk) |
---|
| 42 | + EXPORT_SYMBOL(preempt_schedule_notrace_thunk) |
---|
45 | 43 | |
---|
46 | | -#ifdef CONFIG_DEBUG_LOCK_ALLOC |
---|
47 | | - THUNK lockdep_sys_exit_thunk,lockdep_sys_exit |
---|
48 | | -#endif |
---|
49 | | - |
---|
50 | | -#ifdef CONFIG_PREEMPT |
---|
51 | | - THUNK ___preempt_schedule, preempt_schedule |
---|
52 | | - THUNK ___preempt_schedule_notrace, preempt_schedule_notrace |
---|
53 | | - EXPORT_SYMBOL(___preempt_schedule) |
---|
54 | | - EXPORT_SYMBOL(___preempt_schedule_notrace) |
---|
55 | | -#endif |
---|
56 | | - |
---|
57 | | -#if defined(CONFIG_TRACE_IRQFLAGS) \ |
---|
58 | | - || defined(CONFIG_DEBUG_LOCK_ALLOC) \ |
---|
59 | | - || defined(CONFIG_PREEMPT) |
---|
60 | | -.L_restore: |
---|
| 44 | +SYM_CODE_START_LOCAL_NOALIGN(__thunk_restore) |
---|
61 | 45 | popq %r11 |
---|
62 | 46 | popq %r10 |
---|
63 | 47 | popq %r9 |
---|
.. | .. |
---|
68 | 52 | popq %rsi |
---|
69 | 53 | popq %rdi |
---|
70 | 54 | popq %rbp |
---|
71 | | - ret |
---|
72 | | - _ASM_NOKPROBE(.L_restore) |
---|
73 | | -#endif |
---|
| 55 | + RET |
---|
| 56 | + _ASM_NOKPROBE(__thunk_restore) |
---|
| 57 | +SYM_CODE_END(__thunk_restore) |
---|