Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _ASM_MODULE_H |
2 | #define _ASM_MODULE_H | |
3 | ||
1da177e4 LT |
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 | ||
4e6a05fe TS |
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. */ | |
1da177e4 LT |
33 | } Elf64_Mips_Rela; |
34 | ||
875d43e7 | 35 | #ifdef CONFIG_32BIT |
1da177e4 LT |
36 | |
37 | #define Elf_Shdr Elf32_Shdr | |
38 | #define Elf_Sym Elf32_Sym | |
39 | #define Elf_Ehdr Elf32_Ehdr | |
4e6a05fe TS |
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) | |
1da177e4 LT |
47 | |
48 | #endif | |
49 | ||
875d43e7 | 50 | #ifdef CONFIG_64BIT |
1da177e4 LT |
51 | |
52 | #define Elf_Shdr Elf64_Shdr | |
53 | #define Elf_Sym Elf64_Sym | |
54 | #define Elf_Ehdr Elf64_Ehdr | |
4e6a05fe TS |
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) | |
1da177e4 LT |
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 | ||
097975fc | 77 | #ifdef CONFIG_CPU_MIPS32_R1 |
b0c70516 | 78 | #define MODULE_PROC_FAMILY "MIPS32_R1 " |
097975fc | 79 | #elif defined CONFIG_CPU_MIPS32_R2 |
b0c70516 | 80 | #define MODULE_PROC_FAMILY "MIPS32_R2 " |
097975fc | 81 | #elif defined CONFIG_CPU_MIPS64_R1 |
b0c70516 | 82 | #define MODULE_PROC_FAMILY "MIPS64_R1 " |
097975fc | 83 | #elif defined CONFIG_CPU_MIPS64_R2 |
b0c70516 | 84 | #define MODULE_PROC_FAMILY "MIPS64_R2 " |
097975fc | 85 | #elif defined CONFIG_CPU_R3000 |
b0c70516 | 86 | #define MODULE_PROC_FAMILY "R3000 " |
097975fc | 87 | #elif defined CONFIG_CPU_TX39XX |
b0c70516 | 88 | #define MODULE_PROC_FAMILY "TX39XX " |
097975fc | 89 | #elif defined CONFIG_CPU_VR41XX |
b0c70516 | 90 | #define MODULE_PROC_FAMILY "VR41XX " |
097975fc | 91 | #elif defined CONFIG_CPU_R4300 |
b0c70516 | 92 | #define MODULE_PROC_FAMILY "R4300 " |
097975fc | 93 | #elif defined CONFIG_CPU_R4X00 |
b0c70516 | 94 | #define MODULE_PROC_FAMILY "R4X00 " |
097975fc | 95 | #elif defined CONFIG_CPU_TX49XX |
b0c70516 | 96 | #define MODULE_PROC_FAMILY "TX49XX " |
097975fc | 97 | #elif defined CONFIG_CPU_R5000 |
b0c70516 | 98 | #define MODULE_PROC_FAMILY "R5000 " |
097975fc | 99 | #elif defined CONFIG_CPU_R5432 |
b0c70516 | 100 | #define MODULE_PROC_FAMILY "R5432 " |
097975fc | 101 | #elif defined CONFIG_CPU_R6000 |
b0c70516 | 102 | #define MODULE_PROC_FAMILY "R6000 " |
097975fc | 103 | #elif defined CONFIG_CPU_NEVADA |
b0c70516 | 104 | #define MODULE_PROC_FAMILY "NEVADA " |
097975fc | 105 | #elif defined CONFIG_CPU_R8000 |
b0c70516 | 106 | #define MODULE_PROC_FAMILY "R8000 " |
097975fc | 107 | #elif defined CONFIG_CPU_R10000 |
b0c70516 | 108 | #define MODULE_PROC_FAMILY "R10000 " |
097975fc | 109 | #elif defined CONFIG_CPU_RM7000 |
b0c70516 | 110 | #define MODULE_PROC_FAMILY "RM7000 " |
097975fc | 111 | #elif defined CONFIG_CPU_RM9000 |
b0c70516 | 112 | #define MODULE_PROC_FAMILY "RM9000 " |
097975fc | 113 | #elif defined CONFIG_CPU_SB1 |
b0c70516 | 114 | #define MODULE_PROC_FAMILY "SB1 " |
097975fc RB |
115 | #else |
116 | #error MODULE_PROC_FAMILY undefined for your processor configuration | |
117 | #endif | |
118 | ||
119 | #ifdef CONFIG_32BIT | |
120 | #define MODULE_KERNEL_TYPE "32BIT " | |
121 | #elif defined CONFIG_64BIT | |
122 | #define MODULE_KERNEL_TYPE "64BIT " | |
123 | #endif | |
124 | ||
125 | #define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_KERNEL_TYPE | |
126 | ||
1da177e4 | 127 | #endif /* _ASM_MODULE_H */ |