Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/x86/lib/thunk_64.S
10817 views
1
/*
2
* Save registers before calling assembly functions. This avoids
3
* disturbance of register allocation in some inline assembly constructs.
4
* 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
*/
8
9
#include <linux/linkage.h>
10
#include <asm/dwarf2.h>
11
#include <asm/calling.h>
12
#include <asm/rwlock.h>
13
14
/* rdi: arg1 ... normal C conventions. rax is saved/restored. */
15
.macro thunk name,func
16
.globl \name
17
\name:
18
CFI_STARTPROC
19
SAVE_ARGS
20
call \func
21
jmp restore
22
CFI_ENDPROC
23
.endm
24
25
#ifdef CONFIG_TRACE_IRQFLAGS
26
/* put return address in rdi (arg1) */
27
.macro thunk_ra name,func
28
.globl \name
29
\name:
30
CFI_STARTPROC
31
SAVE_ARGS
32
/* SAVE_ARGS pushs 9 elements */
33
/* the next element would be the rip */
34
movq 9*8(%rsp), %rdi
35
call \func
36
jmp restore
37
CFI_ENDPROC
38
.endm
39
40
thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller
41
thunk_ra trace_hardirqs_off_thunk,trace_hardirqs_off_caller
42
#endif
43
44
#ifdef CONFIG_DEBUG_LOCK_ALLOC
45
thunk lockdep_sys_exit_thunk,lockdep_sys_exit
46
#endif
47
48
/* SAVE_ARGS below is used only for the .cfi directives it contains. */
49
CFI_STARTPROC
50
SAVE_ARGS
51
restore:
52
RESTORE_ARGS
53
ret
54
CFI_ENDPROC
55
56