123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #ifndef _LINUX_LINKAGE_H
- #define _LINUX_LINKAGE_H
- #include <linux/compiler.h>
- #include <linux/stringify.h>
- #include <linux/export.h>
- #include <asm/linkage.h>
- #ifndef ASM_NL
- #define ASM_NL ;
- #endif
- #ifdef __cplusplus
- #define CPP_ASMLINKAGE extern "C"
- #else
- #define CPP_ASMLINKAGE
- #endif
- #ifndef asmlinkage
- #define asmlinkage CPP_ASMLINKAGE
- #endif
- #ifndef cond_syscall
- #define cond_syscall(x) asm( \
- ".weak " VMLINUX_SYMBOL_STR(x) "\n\t" \
- ".set " VMLINUX_SYMBOL_STR(x) "," \
- VMLINUX_SYMBOL_STR(sys_ni_syscall))
- #endif
- #ifndef SYSCALL_ALIAS
- #define SYSCALL_ALIAS(alias, name) asm( \
- ".globl " VMLINUX_SYMBOL_STR(alias) "\n\t" \
- ".set " VMLINUX_SYMBOL_STR(alias) "," \
- VMLINUX_SYMBOL_STR(name))
- #endif
- #define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE)
- #define __page_aligned_bss __section(.bss..page_aligned) __aligned(PAGE_SIZE)
- #define __PAGE_ALIGNED_DATA .section ".data..page_aligned", "aw"
- #define __PAGE_ALIGNED_BSS .section ".bss..page_aligned", "aw"
- #ifndef __ASSEMBLY__
- #ifndef asmlinkage_protect
- # define asmlinkage_protect(n, ret, args...) do { } while (0)
- #endif
- #endif
- #ifndef __ALIGN
- #define __ALIGN .align 4,0x90
- #define __ALIGN_STR ".align 4,0x90"
- #endif
- #ifdef __ASSEMBLY__
- #ifndef LINKER_SCRIPT
- #define ALIGN __ALIGN
- #define ALIGN_STR __ALIGN_STR
- #ifndef ENTRY
- #define ENTRY(name) \
- .globl name ASM_NL \
- ALIGN ASM_NL \
- name:
- #endif
- #endif
- #ifndef WEAK
- #define WEAK(name) \
- .weak name ASM_NL \
- name:
- #endif
- #ifndef END
- #define END(name) \
- .size name, .-name
- #endif
- #ifndef ENDPROC
- #define ENDPROC(name) \
- .type name, @function ASM_NL \
- END(name)
- #endif
- #endif
- #endif
|