| #ifndef _ASM_POWERPC_MODULE_H | 
 | #define _ASM_POWERPC_MODULE_H | 
 | #ifdef __KERNEL__ | 
 |  | 
 | /* | 
 |  * This program is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU General Public License | 
 |  * as published by the Free Software Foundation; either version | 
 |  * 2 of the License, or (at your option) any later version. | 
 |  */ | 
 |  | 
 | #include <linux/list.h> | 
 | #include <asm/bug.h> | 
 |  | 
 |  | 
 | #ifndef __powerpc64__ | 
 | /* | 
 |  * Thanks to Paul M for explaining this. | 
 |  * | 
 |  * PPC can only do rel jumps += 32MB, and often the kernel and other | 
 |  * modules are furthur away than this.  So, we jump to a table of | 
 |  * trampolines attached to the module (the Procedure Linkage Table) | 
 |  * whenever that happens. | 
 |  */ | 
 |  | 
 | struct ppc_plt_entry { | 
 | 	/* 16 byte jump instruction sequence (4 instructions) */ | 
 | 	unsigned int jump[4]; | 
 | }; | 
 | #endif	/* __powerpc64__ */ | 
 |  | 
 |  | 
 | struct mod_arch_specific { | 
 | #ifdef __powerpc64__ | 
 | 	unsigned int stubs_section;	/* Index of stubs section in module */ | 
 | 	unsigned int toc_section;	/* What section is the TOC? */ | 
 | #else | 
 | 	/* Indices of PLT sections within module. */ | 
 | 	unsigned int core_plt_section; | 
 | 	unsigned int init_plt_section; | 
 | #endif | 
 |  | 
 | 	/* List of BUG addresses, source line numbers and filenames */ | 
 | 	struct list_head bug_list; | 
 | 	struct bug_entry *bug_table; | 
 | 	unsigned int num_bugs; | 
 | }; | 
 |  | 
 | extern struct bug_entry *module_find_bug(unsigned long bugaddr); | 
 |  | 
 | /* | 
 |  * Select ELF headers. | 
 |  * Make empty section for module_frob_arch_sections to expand. | 
 |  */ | 
 |  | 
 | #ifdef __powerpc64__ | 
 | #    define Elf_Shdr	Elf64_Shdr | 
 | #    define Elf_Sym	Elf64_Sym | 
 | #    define Elf_Ehdr	Elf64_Ehdr | 
 | #    ifdef MODULE | 
 | 	asm(".section .stubs,\"ax\",@nobits; .align 3; .previous"); | 
 | #    endif | 
 | #else | 
 | #    define Elf_Shdr	Elf32_Shdr | 
 | #    define Elf_Sym	Elf32_Sym | 
 | #    define Elf_Ehdr	Elf32_Ehdr | 
 | #    ifdef MODULE | 
 | 	asm(".section .plt,\"ax\",@nobits; .align 3; .previous"); | 
 | 	asm(".section .init.plt,\"ax\",@nobits; .align 3; .previous"); | 
 | #    endif	/* MODULE */ | 
 | #endif | 
 |  | 
 |  | 
 | struct exception_table_entry; | 
 | void sort_ex_table(struct exception_table_entry *start, | 
 | 		   struct exception_table_entry *finish); | 
 |  | 
 | #endif /* __KERNEL__ */ | 
 | #endif	/* _ASM_POWERPC_MODULE_H */ |