mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.3 KiB
86 lines
2.3 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _ASM_MODULE_H |
|
#define _ASM_MODULE_H |
|
|
|
#include <linux/list.h> |
|
#include <linux/elf.h> |
|
#include <asm/extable.h> |
|
|
|
struct mod_arch_specific { |
|
/* Data Bus Error exception tables */ |
|
struct list_head dbe_list; |
|
const struct exception_table_entry *dbe_start; |
|
const struct exception_table_entry *dbe_end; |
|
struct mips_hi16 *r_mips_hi16_list; |
|
}; |
|
|
|
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ |
|
|
|
typedef struct { |
|
Elf64_Addr r_offset; /* Address of relocation. */ |
|
Elf64_Word r_sym; /* Symbol index. */ |
|
Elf64_Byte r_ssym; /* Special symbol. */ |
|
Elf64_Byte r_type3; /* Third relocation. */ |
|
Elf64_Byte r_type2; /* Second relocation. */ |
|
Elf64_Byte r_type; /* First relocation. */ |
|
} Elf64_Mips_Rel; |
|
|
|
typedef struct { |
|
Elf64_Addr r_offset; /* Address of relocation. */ |
|
Elf64_Word r_sym; /* Symbol index. */ |
|
Elf64_Byte r_ssym; /* Special symbol. */ |
|
Elf64_Byte r_type3; /* Third relocation. */ |
|
Elf64_Byte r_type2; /* Second relocation. */ |
|
Elf64_Byte r_type; /* First relocation. */ |
|
Elf64_Sxword r_addend; /* Addend. */ |
|
} Elf64_Mips_Rela; |
|
|
|
#ifdef CONFIG_32BIT |
|
#define Elf_Shdr Elf32_Shdr |
|
#define Elf_Sym Elf32_Sym |
|
#define Elf_Ehdr Elf32_Ehdr |
|
#define Elf_Addr Elf32_Addr |
|
#define Elf_Rel Elf32_Rel |
|
#define Elf_Rela Elf32_Rela |
|
#define ELF_R_TYPE(X) ELF32_R_TYPE(X) |
|
#define ELF_R_SYM(X) ELF32_R_SYM(X) |
|
|
|
#define Elf_Mips_Rel Elf32_Rel |
|
#define Elf_Mips_Rela Elf32_Rela |
|
|
|
#define ELF_MIPS_R_SYM(rel) ELF32_R_SYM((rel).r_info) |
|
#define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE((rel).r_info) |
|
|
|
#endif |
|
|
|
#ifdef CONFIG_64BIT |
|
#define Elf_Shdr Elf64_Shdr |
|
#define Elf_Sym Elf64_Sym |
|
#define Elf_Ehdr Elf64_Ehdr |
|
#define Elf_Addr Elf64_Addr |
|
#define Elf_Rel Elf64_Rel |
|
#define Elf_Rela Elf64_Rela |
|
#define ELF_R_TYPE(X) ELF64_R_TYPE(X) |
|
#define ELF_R_SYM(X) ELF64_R_SYM(X) |
|
|
|
#define Elf_Mips_Rel Elf64_Mips_Rel |
|
#define Elf_Mips_Rela Elf64_Mips_Rela |
|
|
|
#define ELF_MIPS_R_SYM(rel) ((rel).r_sym) |
|
#define ELF_MIPS_R_TYPE(rel) ((rel).r_type) |
|
|
|
#endif |
|
|
|
#ifdef CONFIG_MODULES |
|
/* Given an address, look for it in the exception tables. */ |
|
const struct exception_table_entry*search_module_dbetables(unsigned long addr); |
|
#else |
|
/* Given an address, look for it in the exception tables. */ |
|
static inline const struct exception_table_entry * |
|
search_module_dbetables(unsigned long addr) |
|
{ |
|
return NULL; |
|
} |
|
#endif |
|
|
|
#endif /* _ASM_MODULE_H */
|
|
|