diff options
author | Thiemo Seufer <ths@networkno.de> | 2005-02-21 05:45:09 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:30:39 -0400 |
commit | 4e6a05fe5f87efd58da16fbf61e1f6329575fcfd (patch) | |
tree | ed16ed0f4f0307373bba6f83e91fc6495add020b /include/asm-mips | |
parent | 7ee8798f3756fc473e63abeba56fae3e192ce71f (diff) |
Improved modules loader, more robust and works on 64bit kernels.
Signed-off-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'include/asm-mips')
-rw-r--r-- | include/asm-mips/module.h | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/include/asm-mips/module.h b/include/asm-mips/module.h index 0be58b2aeb9f..2a81e02a3035 100644 --- a/include/asm-mips/module.h +++ b/include/asm-mips/module.h | |||
@@ -14,15 +14,23 @@ struct mod_arch_specific { | |||
14 | 14 | ||
15 | typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ | 15 | typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */ |
16 | 16 | ||
17 | typedef struct | 17 | typedef struct { |
18 | { | 18 | Elf64_Addr r_offset; /* Address of relocation. */ |
19 | Elf64_Addr r_offset; /* Address of relocation. */ | 19 | Elf64_Word r_sym; /* Symbol index. */ |
20 | Elf64_Word r_sym; /* Symbol index. */ | 20 | Elf64_Byte r_ssym; /* Special symbol. */ |
21 | Elf64_Byte r_ssym; /* Special symbol. */ | 21 | Elf64_Byte r_type3; /* Third relocation. */ |
22 | Elf64_Byte r_type3; /* Third relocation. */ | 22 | Elf64_Byte r_type2; /* Second relocation. */ |
23 | Elf64_Byte r_type2; /* Second relocation. */ | 23 | Elf64_Byte r_type; /* First relocation. */ |
24 | Elf64_Byte r_type; /* First relocation. */ | 24 | } Elf64_Mips_Rel; |
25 | Elf64_Sxword r_addend; /* Addend. */ | 25 | |
26 | typedef 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. */ | ||
26 | } Elf64_Mips_Rela; | 34 | } Elf64_Mips_Rela; |
27 | 35 | ||
28 | #ifdef CONFIG_32BIT | 36 | #ifdef CONFIG_32BIT |
@@ -30,6 +38,13 @@ typedef struct | |||
30 | #define Elf_Shdr Elf32_Shdr | 38 | #define Elf_Shdr Elf32_Shdr |
31 | #define Elf_Sym Elf32_Sym | 39 | #define Elf_Sym Elf32_Sym |
32 | #define Elf_Ehdr Elf32_Ehdr | 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) | ||
33 | 48 | ||
34 | #endif | 49 | #endif |
35 | 50 | ||
@@ -38,6 +53,13 @@ typedef struct | |||
38 | #define Elf_Shdr Elf64_Shdr | 53 | #define Elf_Shdr Elf64_Shdr |
39 | #define Elf_Sym Elf64_Sym | 54 | #define Elf_Sym Elf64_Sym |
40 | #define Elf_Ehdr Elf64_Ehdr | 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) | ||
41 | 63 | ||
42 | #endif | 64 | #endif |
43 | 65 | ||