diff options
Diffstat (limited to 'include/asm-mips/module.h')
-rw-r--r-- | include/asm-mips/module.h | 90 |
1 files changed, 81 insertions, 9 deletions
diff --git a/include/asm-mips/module.h b/include/asm-mips/module.h index 0be58b2aeb9f..2be399311eec 100644 --- a/include/asm-mips/module.h +++ b/include/asm-mips/module.h | |||
@@ -14,15 +14,23 @@ struct mod_arch_specific { | |||
14 | 14 | ||
15 | typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ | 15 | typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ |
16 | 16 | ||
17 | typedef struct | 17 | typedef struct { |
18 | { | 18 | Elf64_Addr r_offset; /* Address of relocation. */ |
19 | Elf64_Addr r_offset; /* Address of relocation. */ | 19 | Elf64_Word r_sym; /* Symbol index. */ |
20 | Elf64_Word r_sym; /* Symbol index. */ | 20 | Elf64_Byte r_ssym; /* Special symbol. */ |
21 | Elf64_Byte r_ssym; /* Special symbol. */ | 21 | Elf64_Byte r_type3; /* Third relocation. */ |
22 | Elf64_Byte r_type3; /* Third relocation. */ | 22 | Elf64_Byte r_type2; /* Second relocation. */ |
23 | Elf64_Byte r_type2; /* Second relocation. */ | 23 | Elf64_Byte r_type; /* First relocation. */ |
24 | Elf64_Byte r_type; /* First relocation. */ | 24 | } Elf64_Mips_Rel; |
25 | Elf64_Sxword r_addend; /* Addend. */ | 25 | |
26 | typedef struct { | ||
27 | Elf64_Addr r_offset; /* Address of relocation. */ | ||
28 | Elf64_Word r_sym; /* Symbol index. */ | ||
29 | Elf64_Byte r_ssym; /* Special symbol. */ | ||
30 | Elf64_Byte r_type3; /* Third relocation. */ | ||
31 | Elf64_Byte r_type2; /* Second relocation. */ | ||
32 | Elf64_Byte r_type; /* First relocation. */ | ||
33 | Elf64_Sxword r_addend; /* Addend. */ | ||
26 | } Elf64_Mips_Rela; | 34 | } Elf64_Mips_Rela; |
27 | 35 | ||
28 | #ifdef CONFIG_32BIT | 36 | #ifdef CONFIG_32BIT |
@@ -30,6 +38,13 @@ typedef struct | |||
30 | #define Elf_Shdr Elf32_Shdr | 38 | #define Elf_Shdr Elf32_Shdr |
31 | #define Elf_Sym Elf32_Sym | 39 | #define Elf_Sym Elf32_Sym |
32 | #define Elf_Ehdr Elf32_Ehdr | 40 | #define Elf_Ehdr Elf32_Ehdr |
41 | #define Elf_Addr Elf32_Addr | ||
42 | |||
43 | #define Elf_Mips_Rel Elf32_Rel | ||
44 | #define Elf_Mips_Rela Elf32_Rela | ||
45 | |||
46 | #define ELF_MIPS_R_SYM(rel) ELF32_R_SYM(rel.r_info) | ||
47 | #define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE(rel.r_info) | ||
33 | 48 | ||
34 | #endif | 49 | #endif |
35 | 50 | ||
@@ -38,6 +53,13 @@ typedef struct | |||
38 | #define Elf_Shdr Elf64_Shdr | 53 | #define Elf_Shdr Elf64_Shdr |
39 | #define Elf_Sym Elf64_Sym | 54 | #define Elf_Sym Elf64_Sym |
40 | #define Elf_Ehdr Elf64_Ehdr | 55 | #define Elf_Ehdr Elf64_Ehdr |
56 | #define Elf_Addr Elf64_Addr | ||
57 | |||
58 | #define Elf_Mips_Rel Elf64_Mips_Rel | ||
59 | #define Elf_Mips_Rela Elf64_Mips_Rela | ||
60 | |||
61 | #define ELF_MIPS_R_SYM(rel) (rel.r_sym) | ||
62 | #define ELF_MIPS_R_TYPE(rel) (rel.r_type) | ||
41 | 63 | ||
42 | #endif | 64 | #endif |
43 | 65 | ||
@@ -53,4 +75,54 @@ search_module_dbetables(unsigned long addr) | |||
53 | } | 75 | } |
54 | #endif | 76 | #endif |
55 | 77 | ||
78 | #ifdef CONFIG_CPU_MIPS32_R1 | ||
79 | #define MODULE_PROC_FAMILY "MIPS32_R1" | ||
80 | #elif defined CONFIG_CPU_MIPS32_R2 | ||
81 | #define MODULE_PROC_FAMILY "MIPS32_R2" | ||
82 | #elif defined CONFIG_CPU_MIPS64_R1 | ||
83 | #define MODULE_PROC_FAMILY "MIPS64_R1" | ||
84 | #elif defined CONFIG_CPU_MIPS64_R2 | ||
85 | #define MODULE_PROC_FAMILY "MIPS64_R2" | ||
86 | #elif defined CONFIG_CPU_R3000 | ||
87 | #define MODULE_PROC_FAMILY "R3000" | ||
88 | #elif defined CONFIG_CPU_TX39XX | ||
89 | #define MODULE_PROC_FAMILY "TX39XX" | ||
90 | #elif defined CONFIG_CPU_VR41XX | ||
91 | #define MODULE_PROC_FAMILY "VR41XX" | ||
92 | #elif defined CONFIG_CPU_R4300 | ||
93 | #define MODULE_PROC_FAMILY "R4300" | ||
94 | #elif defined CONFIG_CPU_R4X00 | ||
95 | #define MODULE_PROC_FAMILY "R4X00" | ||
96 | #elif defined CONFIG_CPU_TX49XX | ||
97 | #define MODULE_PROC_FAMILY "TX49XX" | ||
98 | #elif defined CONFIG_CPU_R5000 | ||
99 | #define MODULE_PROC_FAMILY "R5000" | ||
100 | #elif defined CONFIG_CPU_R5432 | ||
101 | #define MODULE_PROC_FAMILY "R5432" | ||
102 | #elif defined CONFIG_CPU_R6000 | ||
103 | #define MODULE_PROC_FAMILY "R6000" | ||
104 | #elif defined CONFIG_CPU_NEVADA | ||
105 | #define MODULE_PROC_FAMILY "NEVADA" | ||
106 | #elif defined CONFIG_CPU_R8000 | ||
107 | #define MODULE_PROC_FAMILY "R8000" | ||
108 | #elif defined CONFIG_CPU_R10000 | ||
109 | #define MODULE_PROC_FAMILY "R10000" | ||
110 | #elif defined CONFIG_CPU_RM7000 | ||
111 | #define MODULE_PROC_FAMILY "RM7000" | ||
112 | #elif defined CONFIG_CPU_RM9000 | ||
113 | #define MODULE_PROC_FAMILY "RM9000" | ||
114 | #elif defined CONFIG_CPU_SB1 | ||
115 | #define MODULE_PROC_FAMILY "SB1" | ||
116 | #else | ||
117 | #error MODULE_PROC_FAMILY undefined for your processor configuration | ||
118 | #endif | ||
119 | |||
120 | #ifdef CONFIG_32BIT | ||
121 | #define MODULE_KERNEL_TYPE "32BIT " | ||
122 | #elif defined CONFIG_64BIT | ||
123 | #define MODULE_KERNEL_TYPE "64BIT " | ||
124 | #endif | ||
125 | |||
126 | #define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_KERNEL_TYPE | ||
127 | |||
56 | #endif /* _ASM_MODULE_H */ | 128 | #endif /* _ASM_MODULE_H */ |