PageRenderTime 10ms CodeModel.GetById 7ms app.highlight 2ms RepoModel.GetById 0ms app.codeStats 0ms

/arch/x86/lib/thunk_64.S

https://bitbucket.org/thekraven/iscream_thunderc-2.6.35
Assembly | 81 lines | 71 code | 10 blank | 0 comment | 1 complexity | 2bb8c84073d70d0834ec1e962573aca9 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
 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	/* rdi:	arg1 ... normal C conventions. rax is passed from C. */ 	
26	.macro thunk_retrax name,func
27	.globl \name
28\name:	
29	CFI_STARTPROC
30	SAVE_ARGS
31	call \func
32	jmp  restore_norax
33	CFI_ENDPROC
34	.endm
35	
36
37	.section .sched.text, "ax"
38#ifdef CONFIG_RWSEM_XCHGADD_ALGORITHM
39	thunk rwsem_down_read_failed_thunk,rwsem_down_read_failed
40	thunk rwsem_down_write_failed_thunk,rwsem_down_write_failed
41	thunk rwsem_wake_thunk,rwsem_wake
42	thunk rwsem_downgrade_thunk,rwsem_downgrade_wake
43#endif	
44	
45#ifdef CONFIG_TRACE_IRQFLAGS
46	/* put return address in rdi (arg1) */
47	.macro thunk_ra name,func
48	.globl \name
49\name:
50	CFI_STARTPROC
51	SAVE_ARGS
52	/* SAVE_ARGS pushs 9 elements */
53	/* the next element would be the rip */
54	movq 9*8(%rsp), %rdi
55	call \func
56	jmp  restore
57	CFI_ENDPROC
58	.endm
59
60	thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller
61	thunk_ra trace_hardirqs_off_thunk,trace_hardirqs_off_caller
62#endif
63
64#ifdef CONFIG_DEBUG_LOCK_ALLOC
65	thunk lockdep_sys_exit_thunk,lockdep_sys_exit
66#endif
67	
68	/* SAVE_ARGS below is used only for the .cfi directives it contains. */
69	CFI_STARTPROC
70	SAVE_ARGS
71restore:
72	RESTORE_ARGS
73	ret	
74	CFI_ENDPROC
75	
76	CFI_STARTPROC
77	SAVE_ARGS
78restore_norax:	
79	RESTORE_ARGS 1
80	ret
81	CFI_ENDPROC