linux/include/linux/linkage.h
<<
>>
Prefs
   1#ifndef _LINUX_LINKAGE_H
   2#define _LINUX_LINKAGE_H
   3
   4#include <linux/compiler.h>
   5#include <asm/linkage.h>
   6
   7#define notrace __attribute__((no_instrument_function))
   8
   9#ifdef __cplusplus
  10#define CPP_ASMLINKAGE extern "C"
  11#else
  12#define CPP_ASMLINKAGE
  13#endif
  14
  15#ifndef asmlinkage
  16#define asmlinkage CPP_ASMLINKAGE
  17#endif
  18
  19#ifndef asmregparm
  20# define asmregparm
  21#endif
  22
  23#define __page_aligned_data     __section(.data.page_aligned) __aligned(PAGE_SIZE)
  24#define __page_aligned_bss      __section(.bss.page_aligned) __aligned(PAGE_SIZE)
  25
  26/*
  27 * This is used by architectures to keep arguments on the stack
  28 * untouched by the compiler by keeping them live until the end.
  29 * The argument stack may be owned by the assembly-language
  30 * caller, not the callee, and gcc doesn't always understand
  31 * that.
  32 *
  33 * We have the return value, and a maximum of six arguments.
  34 *
  35 * This should always be followed by a "return ret" for the
  36 * protection to work (ie no more work that the compiler might
  37 * end up needing stack temporaries for).
  38 */
  39/* Assembly files may be compiled with -traditional .. */
  40#ifndef __ASSEMBLY__
  41#ifndef asmlinkage_protect
  42# define asmlinkage_protect(n, ret, args...)    do { } while (0)
  43#endif
  44#endif
  45
  46#ifndef __ALIGN
  47#define __ALIGN         .align 4,0x90
  48#define __ALIGN_STR     ".align 4,0x90"
  49#endif
  50
  51#ifdef __ASSEMBLY__
  52
  53#define ALIGN __ALIGN
  54#define ALIGN_STR __ALIGN_STR
  55
  56#ifndef ENTRY
  57#define ENTRY(name) \
  58  .globl name; \
  59  ALIGN; \
  60  name:
  61#endif
  62
  63#ifndef WEAK
  64#define WEAK(name)         \
  65        .weak name;        \
  66        name:
  67#endif
  68
  69#define KPROBE_ENTRY(name) \
  70  .pushsection .kprobes.text, "ax"; \
  71  ENTRY(name)
  72
  73#define KPROBE_END(name) \
  74  END(name);             \
  75  .popsection
  76
  77#ifndef END
  78#define END(name) \
  79  .size name, .-name
  80#endif
  81
  82/* If symbol 'name' is treated as a subroutine (gets called, and returns)
  83 * then please use ENDPROC to mark 'name' as STT_FUNC for the benefit of
  84 * static analysis tools such as stack depth analyzer.
  85 */
  86#ifndef ENDPROC
  87#define ENDPROC(name) \
  88  .type name, @function; \
  89  END(name)
  90#endif
  91
  92#endif
  93
  94#define NORET_TYPE    /**/
  95#define ATTRIB_NORET  __attribute__((noreturn))
  96#define NORET_AND     noreturn,
  97
  98#endif
  99
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.