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