d50efc6c40
introduce the "asmregparm" calling convention: for functions implemented in assembly with a fixed regparm input parameters calling convention. mark the semaphore and rwsem slowpath functions with that. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
78 lines
1.1 KiB
C
78 lines
1.1 KiB
C
#ifndef _LINUX_LINKAGE_H
|
|
#define _LINUX_LINKAGE_H
|
|
|
|
#include <asm/linkage.h>
|
|
|
|
#ifdef __cplusplus
|
|
#define CPP_ASMLINKAGE extern "C"
|
|
#else
|
|
#define CPP_ASMLINKAGE
|
|
#endif
|
|
|
|
#ifndef asmlinkage
|
|
#define asmlinkage CPP_ASMLINKAGE
|
|
#endif
|
|
|
|
#ifndef asmregparm
|
|
# define asmregparm
|
|
#endif
|
|
|
|
#ifndef prevent_tail_call
|
|
# define prevent_tail_call(ret) do { } while (0)
|
|
#endif
|
|
|
|
#ifndef __ALIGN
|
|
#define __ALIGN .align 4,0x90
|
|
#define __ALIGN_STR ".align 4,0x90"
|
|
#endif
|
|
|
|
#ifdef __ASSEMBLY__
|
|
|
|
#define ALIGN __ALIGN
|
|
#define ALIGN_STR __ALIGN_STR
|
|
|
|
#ifndef ENTRY
|
|
#define ENTRY(name) \
|
|
.globl name; \
|
|
ALIGN; \
|
|
name:
|
|
#endif
|
|
|
|
#ifndef WEAK
|
|
#define WEAK(name) \
|
|
.weak name; \
|
|
name:
|
|
#endif
|
|
|
|
#define KPROBE_ENTRY(name) \
|
|
.pushsection .kprobes.text, "ax"; \
|
|
ENTRY(name)
|
|
|
|
#define KPROBE_END(name) \
|
|
END(name); \
|
|
.popsection
|
|
|
|
#ifndef END
|
|
#define END(name) \
|
|
.size name, .-name
|
|
#endif
|
|
|
|
#ifndef ENDPROC
|
|
#define ENDPROC(name) \
|
|
.type name, @function; \
|
|
END(name)
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#define NORET_TYPE /**/
|
|
#define ATTRIB_NORET __attribute__((noreturn))
|
|
#define NORET_AND noreturn,
|
|
|
|
#ifndef FASTCALL
|
|
#define FASTCALL(x) x
|
|
#define fastcall
|
|
#endif
|
|
|
|
#endif
|