Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.19-rc5 55 lines 1.4 kB view raw
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#include <linux/linkage.h> 9#include <asm/dwarf2.h> 10#include <asm/calling.h> 11#include <asm/asm.h> 12 13 /* rdi: arg1 ... normal C conventions. rax is saved/restored. */ 14 .macro THUNK name, func, put_ret_addr_in_rdi=0 15 .globl \name 16\name: 17 CFI_STARTPROC 18 19 /* this one pushes 9 elems, the next one would be %rIP */ 20 SAVE_ARGS 21 22 .if \put_ret_addr_in_rdi 23 movq_cfi_restore 9*8, rdi 24 .endif 25 26 call \func 27 jmp restore 28 CFI_ENDPROC 29 _ASM_NOKPROBE(\name) 30 .endm 31 32#ifdef CONFIG_TRACE_IRQFLAGS 33 THUNK trace_hardirqs_on_thunk,trace_hardirqs_on_caller,1 34 THUNK trace_hardirqs_off_thunk,trace_hardirqs_off_caller,1 35#endif 36 37#ifdef CONFIG_DEBUG_LOCK_ALLOC 38 THUNK lockdep_sys_exit_thunk,lockdep_sys_exit 39#endif 40 41#ifdef CONFIG_PREEMPT 42 THUNK ___preempt_schedule, preempt_schedule 43#ifdef CONFIG_CONTEXT_TRACKING 44 THUNK ___preempt_schedule_context, preempt_schedule_context 45#endif 46#endif 47 48 /* SAVE_ARGS below is used only for the .cfi directives it contains. */ 49 CFI_STARTPROC 50 SAVE_ARGS 51restore: 52 RESTORE_ARGS 53 ret 54 CFI_ENDPROC 55 _ASM_NOKPROBE(restore)