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

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. search_module_dbetables

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_MODULE_H
   3 #define _ASM_MODULE_H
   4 
   5 #include <linux/list.h>
   6 #include <linux/elf.h>
   7 #include <asm/extable.h>
   8 
   9 struct mod_arch_specific {
  10         /* Data Bus Error exception tables */
  11         struct list_head dbe_list;
  12         const struct exception_table_entry *dbe_start;
  13         const struct exception_table_entry *dbe_end;
  14         struct mips_hi16 *r_mips_hi16_list;
  15 };
  16 
  17 typedef uint8_t Elf64_Byte;             /* Type for a 8-bit quantity.  */
  18 
  19 typedef struct {
  20         Elf64_Addr r_offset;                    /* Address of relocation.  */
  21         Elf64_Word r_sym;                       /* Symbol index.  */
  22         Elf64_Byte r_ssym;                      /* Special symbol.  */
  23         Elf64_Byte r_type3;                     /* Third relocation.  */
  24         Elf64_Byte r_type2;                     /* Second relocation.  */
  25         Elf64_Byte r_type;                      /* First relocation.  */
  26 } Elf64_Mips_Rel;
  27 
  28 typedef struct {
  29         Elf64_Addr r_offset;                    /* Address of relocation.  */
  30         Elf64_Word r_sym;                       /* Symbol index.  */
  31         Elf64_Byte r_ssym;                      /* Special symbol.  */
  32         Elf64_Byte r_type3;                     /* Third relocation.  */
  33         Elf64_Byte r_type2;                     /* Second relocation.  */
  34         Elf64_Byte r_type;                      /* First relocation.  */
  35         Elf64_Sxword r_addend;                  /* Addend.  */
  36 } Elf64_Mips_Rela;
  37 
  38 #ifdef CONFIG_32BIT
  39 #define Elf_Shdr        Elf32_Shdr
  40 #define Elf_Sym         Elf32_Sym
  41 #define Elf_Ehdr        Elf32_Ehdr
  42 #define Elf_Addr        Elf32_Addr
  43 #define Elf_Rel         Elf32_Rel
  44 #define Elf_Rela        Elf32_Rela
  45 #define ELF_R_TYPE(X)   ELF32_R_TYPE(X)
  46 #define ELF_R_SYM(X)    ELF32_R_SYM(X)
  47 
  48 #define Elf_Mips_Rel    Elf32_Rel
  49 #define Elf_Mips_Rela   Elf32_Rela
  50 
  51 #define ELF_MIPS_R_SYM(rel) ELF32_R_SYM((rel).r_info)
  52 #define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE((rel).r_info)
  53 
  54 #endif
  55 
  56 #ifdef CONFIG_64BIT
  57 #define Elf_Shdr        Elf64_Shdr
  58 #define Elf_Sym         Elf64_Sym
  59 #define Elf_Ehdr        Elf64_Ehdr
  60 #define Elf_Addr        Elf64_Addr
  61 #define Elf_Rel         Elf64_Rel
  62 #define Elf_Rela        Elf64_Rela
  63 #define ELF_R_TYPE(X)   ELF64_R_TYPE(X)
  64 #define ELF_R_SYM(X)    ELF64_R_SYM(X)
  65 
  66 #define Elf_Mips_Rel    Elf64_Mips_Rel
  67 #define Elf_Mips_Rela   Elf64_Mips_Rela
  68 
  69 #define ELF_MIPS_R_SYM(rel) ((rel).r_sym)
  70 #define ELF_MIPS_R_TYPE(rel) ((rel).r_type)
  71 
  72 #endif
  73 
  74 #ifdef CONFIG_MODULES
  75 /* Given an address, look for it in the exception tables. */
  76 const struct exception_table_entry*search_module_dbetables(unsigned long addr);
  77 #else
  78 /* Given an address, look for it in the exception tables. */
  79 static inline const struct exception_table_entry *
  80 search_module_dbetables(unsigned long addr)
  81 {
  82         return NULL;
  83 }
  84 #endif
  85 
  86 #ifdef CONFIG_CPU_BMIPS
  87 #define MODULE_PROC_FAMILY "BMIPS "
  88 #elif defined CONFIG_CPU_MIPS32_R1
  89 #define MODULE_PROC_FAMILY "MIPS32_R1 "
  90 #elif defined CONFIG_CPU_MIPS32_R2
  91 #define MODULE_PROC_FAMILY "MIPS32_R2 "
  92 #elif defined CONFIG_CPU_MIPS32_R6
  93 #define MODULE_PROC_FAMILY "MIPS32_R6 "
  94 #elif defined CONFIG_CPU_MIPS64_R1
  95 #define MODULE_PROC_FAMILY "MIPS64_R1 "
  96 #elif defined CONFIG_CPU_MIPS64_R2
  97 #define MODULE_PROC_FAMILY "MIPS64_R2 "
  98 #elif defined CONFIG_CPU_MIPS64_R6
  99 #define MODULE_PROC_FAMILY "MIPS64_R6 "
 100 #elif defined CONFIG_CPU_R3000
 101 #define MODULE_PROC_FAMILY "R3000 "
 102 #elif defined CONFIG_CPU_TX39XX
 103 #define MODULE_PROC_FAMILY "TX39XX "
 104 #elif defined CONFIG_CPU_VR41XX
 105 #define MODULE_PROC_FAMILY "VR41XX "
 106 #elif defined CONFIG_CPU_R4X00
 107 #define MODULE_PROC_FAMILY "R4X00 "
 108 #elif defined CONFIG_CPU_TX49XX
 109 #define MODULE_PROC_FAMILY "TX49XX "
 110 #elif defined CONFIG_CPU_R5000
 111 #define MODULE_PROC_FAMILY "R5000 "
 112 #elif defined CONFIG_CPU_R5500
 113 #define MODULE_PROC_FAMILY "R5500 "
 114 #elif defined CONFIG_CPU_NEVADA
 115 #define MODULE_PROC_FAMILY "NEVADA "
 116 #elif defined CONFIG_CPU_R10000
 117 #define MODULE_PROC_FAMILY "R10000 "
 118 #elif defined CONFIG_CPU_RM7000
 119 #define MODULE_PROC_FAMILY "RM7000 "
 120 #elif defined CONFIG_CPU_SB1
 121 #define MODULE_PROC_FAMILY "SB1 "
 122 #elif defined CONFIG_CPU_LOONGSON1
 123 #define MODULE_PROC_FAMILY "LOONGSON1 "
 124 #elif defined CONFIG_CPU_LOONGSON2
 125 #define MODULE_PROC_FAMILY "LOONGSON2 "
 126 #elif defined CONFIG_CPU_LOONGSON3
 127 #define MODULE_PROC_FAMILY "LOONGSON3 "
 128 #elif defined CONFIG_CPU_CAVIUM_OCTEON
 129 #define MODULE_PROC_FAMILY "OCTEON "
 130 #elif defined CONFIG_CPU_XLR
 131 #define MODULE_PROC_FAMILY "XLR "
 132 #elif defined CONFIG_CPU_XLP
 133 #define MODULE_PROC_FAMILY "XLP "
 134 #else
 135 #error MODULE_PROC_FAMILY undefined for your processor configuration
 136 #endif
 137 
 138 #ifdef CONFIG_32BIT
 139 #define MODULE_KERNEL_TYPE "32BIT "
 140 #elif defined CONFIG_64BIT
 141 #define MODULE_KERNEL_TYPE "64BIT "
 142 #endif
 143 
 144 #define MODULE_ARCH_VERMAGIC \
 145         MODULE_PROC_FAMILY MODULE_KERNEL_TYPE
 146 
 147 #endif /* _ASM_MODULE_H */

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