root/arch/arm/include/asm/module.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. kallsyms_symbol_value

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_ARM_MODULE_H
   3 #define _ASM_ARM_MODULE_H
   4 
   5 #include <asm-generic/module.h>
   6 
   7 struct unwind_table;
   8 
   9 #ifdef CONFIG_ARM_UNWIND
  10 enum {
  11         ARM_SEC_INIT,
  12         ARM_SEC_DEVINIT,
  13         ARM_SEC_CORE,
  14         ARM_SEC_EXIT,
  15         ARM_SEC_DEVEXIT,
  16         ARM_SEC_HOT,
  17         ARM_SEC_UNLIKELY,
  18         ARM_SEC_MAX,
  19 };
  20 #endif
  21 
  22 struct mod_plt_sec {
  23         struct elf32_shdr       *plt;
  24         int                     plt_count;
  25 };
  26 
  27 struct mod_arch_specific {
  28 #ifdef CONFIG_ARM_UNWIND
  29         struct unwind_table *unwind[ARM_SEC_MAX];
  30 #endif
  31 #ifdef CONFIG_ARM_MODULE_PLTS
  32         struct mod_plt_sec      core;
  33         struct mod_plt_sec      init;
  34 #endif
  35 };
  36 
  37 struct module;
  38 u32 get_module_plt(struct module *mod, unsigned long loc, Elf32_Addr val);
  39 
  40 /*
  41  * Add the ARM architecture version to the version magic string
  42  */
  43 #define MODULE_ARCH_VERMAGIC_ARMVSN "ARMv" __stringify(__LINUX_ARM_ARCH__) " "
  44 
  45 /* Add __virt_to_phys patching state as well */
  46 #ifdef CONFIG_ARM_PATCH_PHYS_VIRT
  47 #define MODULE_ARCH_VERMAGIC_P2V "p2v8 "
  48 #else
  49 #define MODULE_ARCH_VERMAGIC_P2V ""
  50 #endif
  51 
  52 /* Add instruction set architecture tag to distinguish ARM/Thumb kernels */
  53 #ifdef CONFIG_THUMB2_KERNEL
  54 #define MODULE_ARCH_VERMAGIC_ARMTHUMB "thumb2 "
  55 #else
  56 #define MODULE_ARCH_VERMAGIC_ARMTHUMB ""
  57 #endif
  58 
  59 #define MODULE_ARCH_VERMAGIC \
  60         MODULE_ARCH_VERMAGIC_ARMVSN \
  61         MODULE_ARCH_VERMAGIC_ARMTHUMB \
  62         MODULE_ARCH_VERMAGIC_P2V
  63 
  64 #ifdef CONFIG_THUMB2_KERNEL
  65 #define HAVE_ARCH_KALLSYMS_SYMBOL_VALUE
  66 static inline unsigned long kallsyms_symbol_value(const Elf_Sym *sym)
  67 {
  68         if (ELF_ST_TYPE(sym->st_info) == STT_FUNC)
  69                 return sym->st_value & ~1;
  70 
  71         return sym->st_value;
  72 }
  73 #endif
  74 
  75 #endif /* _ASM_ARM_MODULE_H */

/* [<][>][^][v][top][bottom][index][help] */