1#ifndef _ASM_MODULE_H 2#define _ASM_MODULE_H 3 4#include <linux/list.h> 5#include <asm/uaccess.h> 6 7struct 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 14typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ 15 16typedef 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 25typedef 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. */ 33} Elf64_Mips_Rela; 34 35#ifdef CONFIG_32BIT 36 37#define Elf_Shdr Elf32_Shdr 38#define Elf_Sym Elf32_Sym 39#define Elf_Ehdr Elf32_Ehdr 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) 47 48#endif 49 50#ifdef CONFIG_64BIT 51 52#define Elf_Shdr Elf64_Shdr 53#define Elf_Sym Elf64_Sym 54#define Elf_Ehdr Elf64_Ehdr 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) 62 63#endif 64 65#ifdef CONFIG_MODULES 66/* Given an address, look for it in the exception tables. */ 67const struct exception_table_entry*search_module_dbetables(unsigned long addr); 68#else 69/* Given an address, look for it in the exception tables. */ 70static inline const struct exception_table_entry * 71search_module_dbetables(unsigned long addr) 72{ 73 return NULL; 74} 75#endif 76 77#ifdef CONFIG_CPU_MIPS32_R1 78#define MODULE_PROC_FAMILY "MIPS32_R1 " 79#elif defined CONFIG_CPU_MIPS32_R2 80#define MODULE_PROC_FAMILY "MIPS32_R2 " 81#elif defined CONFIG_CPU_MIPS64_R1 82#define MODULE_PROC_FAMILY "MIPS64_R1 " 83#elif defined CONFIG_CPU_MIPS64_R2 84#define MODULE_PROC_FAMILY "MIPS64_R2 " 85#elif defined CONFIG_CPU_R3000 86#define MODULE_PROC_FAMILY "R3000 " 87#elif defined CONFIG_CPU_TX39XX 88#define MODULE_PROC_FAMILY "TX39XX " 89#elif defined CONFIG_CPU_VR41XX 90#define MODULE_PROC_FAMILY "VR41XX " 91#elif defined CONFIG_CPU_R4300 92#define MODULE_PROC_FAMILY "R4300 " 93#elif defined CONFIG_CPU_R4X00 94#define MODULE_PROC_FAMILY "R4X00 " 95#elif defined CONFIG_CPU_TX49XX 96#define MODULE_PROC_FAMILY "TX49XX " 97#elif defined CONFIG_CPU_R5000 98#define MODULE_PROC_FAMILY "R5000 " 99#elif defined CONFIG_CPU_R5432 100#define MODULE_PROC_FAMILY "R5432 " 101#elif defined CONFIG_CPU_R6000 102#define MODULE_PROC_FAMILY "R6000 " 103#elif defined CONFIG_CPU_NEVADA 104#define MODULE_PROC_FAMILY "NEVADA " 105#elif defined CONFIG_CPU_R8000 106#define MODULE_PROC_FAMILY "R8000 " 107#elif defined CONFIG_CPU_R10000 108#define MODULE_PROC_FAMILY "R10000 " 109#elif defined CONFIG_CPU_RM7000 110#define MODULE_PROC_FAMILY "RM7000 " 111#elif defined CONFIG_CPU_RM9000 112#define MODULE_PROC_FAMILY "RM9000 " 113#elif defined CONFIG_CPU_SB1 114#define MODULE_PROC_FAMILY "SB1 " 115#elif defined CONFIG_CPU_LOONGSON2 116#define MODULE_PROC_FAMILY "LOONGSON2 " 117#else 118#error MODULE_PROC_FAMILY undefined for your processor configuration 119#endif 120 121#ifdef CONFIG_32BIT 122#define MODULE_KERNEL_TYPE "32BIT " 123#elif defined CONFIG_64BIT 124#define MODULE_KERNEL_TYPE "64BIT " 125#endif 126 127#ifdef CONFIG_MIPS_MT_SMTC 128#define MODULE_KERNEL_SMTC "MT_SMTC " 129#else 130#define MODULE_KERNEL_SMTC "" 131#endif 132 133#define MODULE_ARCH_VERMAGIC \ 134 MODULE_PROC_FAMILY MODULE_KERNEL_TYPE MODULE_KERNEL_SMTC 135 136#endif /* _ASM_MODULE_H */ 137