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