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