1 #ifndef __ASM_GENERIC_EXPORT_H
2 #define __ASM_GENERIC_EXPORT_H
23 * note on .section use: @progbits vs %progbits nastiness doesn't matter,
24 * since we immediately emit into those sections anyway.
26 .macro ___EXPORT_SYMBOL name,val,sec
28 .globl __ksymtab_\name
29 .section ___ksymtab\sec+\name,"a"
32 __put \val, __kstrtab_\name
34 .section __ksymtab_strings,"a"
38 #ifdef CONFIG_MODVERSIONS
39 .section ___kcrctab\sec+\name,"a"
42 #if defined(CONFIG_MODULE_REL_CRCS)
54 #if defined(__KSYM_DEPS__)
56 #define __EXPORT_SYMBOL(sym, val, sec) === __KSYM_##sym ===
58 #elif defined(CONFIG_TRIM_UNUSED_KSYMS)
60 #include <linux/kconfig.h>
61 #include <generated/autoksyms.h>
63 #define __EXPORT_SYMBOL(sym, val, sec) \
64 __cond_export_sym(sym, val, sec, __is_defined(__KSYM_##sym))
65 #define __cond_export_sym(sym, val, sec, conf) \
66 ___cond_export_sym(sym, val, sec, conf)
67 #define ___cond_export_sym(sym, val, sec, enabled) \
68 __cond_export_sym_##enabled(sym, val, sec)
69 #define __cond_export_sym_1(sym, val, sec) ___EXPORT_SYMBOL sym, val, sec
70 #define __cond_export_sym_0(sym, val, sec) /* nothing */
73 #define __EXPORT_SYMBOL(sym, val, sec) ___EXPORT_SYMBOL sym, val, sec
76 #define EXPORT_SYMBOL(name) \
77 __EXPORT_SYMBOL(name, KSYM_FUNC(name),)
78 #define EXPORT_SYMBOL_GPL(name) \
79 __EXPORT_SYMBOL(name, KSYM_FUNC(name), _gpl)
80 #define EXPORT_DATA_SYMBOL(name) \
81 __EXPORT_SYMBOL(name, name,)
82 #define EXPORT_DATA_SYMBOL_GPL(name) \
83 __EXPORT_SYMBOL(name, name,_gpl)