| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _ASM_MODULE_H | 
|  | 2 | #define _ASM_MODULE_H | 
|  | 3 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Thiemo Seufer | 4e6a05f | 2005-02-21 10:45:09 +0000 | [diff] [blame] | 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.  */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | } Elf64_Mips_Rela; | 
|  | 34 |  | 
| Ralf Baechle | 875d43e | 2005-09-03 15:56:16 -0700 | [diff] [blame] | 35 | #ifdef CONFIG_32BIT | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 |  | 
|  | 37 | #define Elf_Shdr	Elf32_Shdr | 
|  | 38 | #define Elf_Sym		Elf32_Sym | 
|  | 39 | #define Elf_Ehdr	Elf32_Ehdr | 
| Thiemo Seufer | 4e6a05f | 2005-02-21 10:45:09 +0000 | [diff] [blame] | 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) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 47 |  | 
|  | 48 | #endif | 
|  | 49 |  | 
| Ralf Baechle | 875d43e | 2005-09-03 15:56:16 -0700 | [diff] [blame] | 50 | #ifdef CONFIG_64BIT | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 51 |  | 
|  | 52 | #define Elf_Shdr	Elf64_Shdr | 
|  | 53 | #define Elf_Sym		Elf64_Sym | 
|  | 54 | #define Elf_Ehdr	Elf64_Ehdr | 
| Thiemo Seufer | 4e6a05f | 2005-02-21 10:45:09 +0000 | [diff] [blame] | 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) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 77 | #ifdef CONFIG_CPU_MIPS32_R1 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 78 | #define MODULE_PROC_FAMILY "MIPS32_R1 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 79 | #elif defined CONFIG_CPU_MIPS32_R2 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 80 | #define MODULE_PROC_FAMILY "MIPS32_R2 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 81 | #elif defined CONFIG_CPU_MIPS64_R1 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 82 | #define MODULE_PROC_FAMILY "MIPS64_R1 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 83 | #elif defined CONFIG_CPU_MIPS64_R2 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 84 | #define MODULE_PROC_FAMILY "MIPS64_R2 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 85 | #elif defined CONFIG_CPU_R3000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 86 | #define MODULE_PROC_FAMILY "R3000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 87 | #elif defined CONFIG_CPU_TX39XX | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 88 | #define MODULE_PROC_FAMILY "TX39XX " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 89 | #elif defined CONFIG_CPU_VR41XX | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 90 | #define MODULE_PROC_FAMILY "VR41XX " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 91 | #elif defined CONFIG_CPU_R4300 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 92 | #define MODULE_PROC_FAMILY "R4300 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 93 | #elif defined CONFIG_CPU_R4X00 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 94 | #define MODULE_PROC_FAMILY "R4X00 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 95 | #elif defined CONFIG_CPU_TX49XX | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 96 | #define MODULE_PROC_FAMILY "TX49XX " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 97 | #elif defined CONFIG_CPU_R5000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 98 | #define MODULE_PROC_FAMILY "R5000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 99 | #elif defined CONFIG_CPU_R5432 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 100 | #define MODULE_PROC_FAMILY "R5432 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 101 | #elif defined CONFIG_CPU_R6000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 102 | #define MODULE_PROC_FAMILY "R6000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 103 | #elif defined CONFIG_CPU_NEVADA | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 104 | #define MODULE_PROC_FAMILY "NEVADA " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 105 | #elif defined CONFIG_CPU_R8000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 106 | #define MODULE_PROC_FAMILY "R8000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 107 | #elif defined CONFIG_CPU_R10000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 108 | #define MODULE_PROC_FAMILY "R10000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 109 | #elif defined CONFIG_CPU_RM7000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 110 | #define MODULE_PROC_FAMILY "RM7000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 111 | #elif defined CONFIG_CPU_RM9000 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 112 | #define MODULE_PROC_FAMILY "RM9000 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 113 | #elif defined CONFIG_CPU_SB1 | 
| Ralf Baechle | b0c7051 | 2005-10-31 00:33:01 +0000 | [diff] [blame] | 114 | #define MODULE_PROC_FAMILY "SB1 " | 
| Ralf Baechle | 097975f | 2005-09-12 20:22:07 +0000 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 127 | #endif /* _ASM_MODULE_H */ |