at v2.6.17 3.6 kB view raw
1#ifndef _ASM_MODULE_H 2#define _ASM_MODULE_H 3 4#include <linux/config.h> 5#include <linux/list.h> 6#include <asm/uaccess.h> 7 8struct mod_arch_specific { 9 /* Data Bus Error exception tables */ 10 struct list_head dbe_list; 11 const struct exception_table_entry *dbe_start; 12 const struct exception_table_entry *dbe_end; 13}; 14 15typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ 16 17typedef struct { 18 Elf64_Addr r_offset; /* Address of relocation. */ 19 Elf64_Word r_sym; /* Symbol index. */ 20 Elf64_Byte r_ssym; /* Special symbol. */ 21 Elf64_Byte r_type3; /* Third relocation. */ 22 Elf64_Byte r_type2; /* Second relocation. */ 23 Elf64_Byte r_type; /* First relocation. */ 24} Elf64_Mips_Rel; 25 26typedef 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. */ 34} Elf64_Mips_Rela; 35 36#ifdef CONFIG_32BIT 37 38#define Elf_Shdr Elf32_Shdr 39#define Elf_Sym Elf32_Sym 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) 48 49#endif 50 51#ifdef CONFIG_64BIT 52 53#define Elf_Shdr Elf64_Shdr 54#define Elf_Sym Elf64_Sym 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) 63 64#endif 65 66#ifdef CONFIG_MODULES 67/* Given an address, look for it in the exception tables. */ 68const struct exception_table_entry*search_module_dbetables(unsigned long addr); 69#else 70/* Given an address, look for it in the exception tables. */ 71static inline const struct exception_table_entry * 72search_module_dbetables(unsigned long addr) 73{ 74 return NULL; 75} 76#endif 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 128#endif /* _ASM_MODULE_H */