Skip to content
Snippets Groups Projects
Select Git revision
  • ed13fc33f763035a7c290f11c7111877c3a5daab
  • drm-misc-templates default
  • wip/final/kci-gitlab-lava-v1
  • wip/vignesh/kci-lava-gitlab-runner
  • kci-gitlab-igt-v8
  • kci-gitlab-igt-v4
  • drm-misc-fixes-2024-10-02
  • drm-misc-next-2024-09-26
  • drm-misc-fixes-2024-09-26
  • drm-misc-next-2024-09-20
  • drm-misc-fixes-2024-09-12
  • drm-misc-fixes-2024-09-05
  • drm-misc-next-fixes-2024-09-05
  • drm-misc-fixes-2024-08-29
  • drm-misc-next-2024-08-29
  • drm-misc-next-2024-08-22
  • drm-misc-fixes-2024-08-22
  • drm-misc-next-2024-08-16
  • drm-misc-fixes-2024-08-15
  • drm-misc-next-2024-08-09
  • drm-misc-fixes-2024-08-08
  • drm-misc-next-2024-08-01
  • drm-misc-fixes-2024-08-01
  • drm-misc-next-fixes-2024-07-25
  • drm-misc-next-fixes-2024-07-19
  • drm-misc-next-fixes-2024-07-11
26 results

export.h

Blame
  • export.h 2.14 KiB
    #ifndef __ASM_GENERIC_EXPORT_H
    #define __ASM_GENERIC_EXPORT_H
    
    #ifndef KSYM_FUNC
    #define KSYM_FUNC(x) x
    #endif
    #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
    #define KSYM_ALIGN 4
    #elif defined(CONFIG_64BIT)
    #define KSYM_ALIGN 8
    #else
    #define KSYM_ALIGN 4
    #endif
    #ifndef KCRC_ALIGN
    #define KCRC_ALIGN 4
    #endif
    
    .macro __put, val, name
    #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
    	.long	\val - ., \name - .
    #elif defined(CONFIG_64BIT)
    	.quad	\val, \name
    #else
    	.long	\val, \name
    #endif
    .endm
    
    /*
     * note on .section use: @progbits vs %progbits nastiness doesn't matter,
     * since we immediately emit into those sections anyway.
     */
    .macro ___EXPORT_SYMBOL name,val,sec
    #ifdef CONFIG_MODULES
    	.globl __ksymtab_\name
    	.section ___ksymtab\sec+\name,"a"
    	.balign KSYM_ALIGN
    __ksymtab_\name:
    	__put \val, __kstrtab_\name
    	.previous
    	.section __ksymtab_strings,"a"
    __kstrtab_\name:
    	.asciz "\name"
    	.previous
    #ifdef CONFIG_MODVERSIONS
    	.section ___kcrctab\sec+\name,"a"
    	.balign KCRC_ALIGN
    __kcrctab_\name:
    #if defined(CONFIG_MODULE_REL_CRCS)
    	.long __crc_\name - .
    #else
    	.long __crc_\name
    #endif
    	.weak __crc_\name
    	.previous
    #endif
    #endif
    .endm
    #undef __put
    
    #if defined(CONFIG_TRIM_UNUSED_KSYMS)
    
    #include <linux/kconfig.h>
    #include <generated/autoksyms.h>
    
    .macro __ksym_marker sym
    	.section ".discard.ksym","a"
    __ksym_marker_\sym:
    	 .previous
    .endm
    
    #define __EXPORT_SYMBOL(sym, val, sec)				\
    	__ksym_marker sym;					\
    	__cond_export_sym(sym, val, sec, __is_defined(__KSYM_##sym))
    #define __cond_export_sym(sym, val, sec, conf)			\
    	___cond_export_sym(sym, val, sec, conf)
    #define ___cond_export_sym(sym, val, sec, enabled)		\
    	__cond_export_sym_##enabled(sym, val, sec)
    #define __cond_export_sym_1(sym, val, sec) ___EXPORT_SYMBOL sym, val, sec
    #define __cond_export_sym_0(sym, val, sec) /* nothing */
    
    #else
    #define __EXPORT_SYMBOL(sym, val, sec) ___EXPORT_SYMBOL sym, val, sec
    #endif
    
    #define EXPORT_SYMBOL(name)					\
    	__EXPORT_SYMBOL(name, KSYM_FUNC(name),)
    #define EXPORT_SYMBOL_GPL(name) 				\
    	__EXPORT_SYMBOL(name, KSYM_FUNC(name), _gpl)
    #define EXPORT_DATA_SYMBOL(name)				\
    	__EXPORT_SYMBOL(name, name,)
    #define EXPORT_DATA_SYMBOL_GPL(name)				\
    	__EXPORT_SYMBOL(name, name,_gpl)
    
    #endif