#ifndef _LINUX_LINKAGE_H
#define _LINUX_LINKAGE_H
-#include <linux/config.h>
#include <asm/linkage.h>
#ifdef __cplusplus
#define asmlinkage CPP_ASMLINKAGE
#endif
+#ifndef asmregparm
+# define asmregparm
+#endif
+
#ifndef prevent_tail_call
# define prevent_tail_call(ret) do { } while (0)
#endif
#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) \
- .section .kprobes.text, "ax"; \
- .globl name; \
- ALIGN; \
- name:
+ .pushsection .kprobes.text, "ax"; \
+ ENTRY(name)
+
+#define KPROBE_END(name) \
+ END(name); \
+ .popsection
+#ifndef END
+#define END(name) \
+ .size name, .-name
+#endif
+
+/* If symbol 'name' is treated as a subroutine (gets called, and returns)
+ * then please use ENDPROC to mark 'name' as STT_FUNC for the benefit of
+ * static analysis tools such as stack depth analyzer.
+ */
+#ifndef ENDPROC
+#define ENDPROC(name) \
+ .type name, @function; \
+ END(name)
+#endif
#endif
#define ATTRIB_NORET __attribute__((noreturn))
#define NORET_AND noreturn,
-#ifndef FASTCALL
-#define FASTCALL(x) x
-#define fastcall
-#endif
-
#endif