module.h (2388B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _ASM_MODULE_H 3#define _ASM_MODULE_H 4 5#include <linux/list.h> 6#include <linux/elf.h> 7#include <asm/extable.h> 8 9struct mod_arch_specific { 10 /* Data Bus Error exception tables */ 11 struct list_head dbe_list; 12 const struct exception_table_entry *dbe_start; 13 const struct exception_table_entry *dbe_end; 14 struct mips_hi16 *r_mips_hi16_list; 15}; 16 17typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ 18 19typedef struct { 20 Elf64_Addr r_offset; /* Address of relocation. */ 21 Elf64_Word r_sym; /* Symbol index. */ 22 Elf64_Byte r_ssym; /* Special symbol. */ 23 Elf64_Byte r_type3; /* Third relocation. */ 24 Elf64_Byte r_type2; /* Second relocation. */ 25 Elf64_Byte r_type; /* First relocation. */ 26} Elf64_Mips_Rel; 27 28typedef struct { 29 Elf64_Addr r_offset; /* Address of relocation. */ 30 Elf64_Word r_sym; /* Symbol index. */ 31 Elf64_Byte r_ssym; /* Special symbol. */ 32 Elf64_Byte r_type3; /* Third relocation. */ 33 Elf64_Byte r_type2; /* Second relocation. */ 34 Elf64_Byte r_type; /* First relocation. */ 35 Elf64_Sxword r_addend; /* Addend. */ 36} Elf64_Mips_Rela; 37 38#ifdef CONFIG_32BIT 39#define Elf_Shdr Elf32_Shdr 40#define Elf_Sym Elf32_Sym 41#define Elf_Ehdr Elf32_Ehdr 42#define Elf_Addr Elf32_Addr 43#define Elf_Rel Elf32_Rel 44#define Elf_Rela Elf32_Rela 45#define ELF_R_TYPE(X) ELF32_R_TYPE(X) 46#define ELF_R_SYM(X) ELF32_R_SYM(X) 47 48#define Elf_Mips_Rel Elf32_Rel 49#define Elf_Mips_Rela Elf32_Rela 50 51#define ELF_MIPS_R_SYM(rel) ELF32_R_SYM((rel).r_info) 52#define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE((rel).r_info) 53 54#endif 55 56#ifdef CONFIG_64BIT 57#define Elf_Shdr Elf64_Shdr 58#define Elf_Sym Elf64_Sym 59#define Elf_Ehdr Elf64_Ehdr 60#define Elf_Addr Elf64_Addr 61#define Elf_Rel Elf64_Rel 62#define Elf_Rela Elf64_Rela 63#define ELF_R_TYPE(X) ELF64_R_TYPE(X) 64#define ELF_R_SYM(X) ELF64_R_SYM(X) 65 66#define Elf_Mips_Rel Elf64_Mips_Rel 67#define Elf_Mips_Rela Elf64_Mips_Rela 68 69#define ELF_MIPS_R_SYM(rel) ((rel).r_sym) 70#define ELF_MIPS_R_TYPE(rel) ((rel).r_type) 71 72#endif 73 74#ifdef CONFIG_MODULES 75/* Given an address, look for it in the exception tables. */ 76const struct exception_table_entry*search_module_dbetables(unsigned long addr); 77#else 78/* Given an address, look for it in the exception tables. */ 79static inline const struct exception_table_entry * 80search_module_dbetables(unsigned long addr) 81{ 82 return NULL; 83} 84#endif 85 86#endif /* _ASM_MODULE_H */