| #ifndef _ASM_POWERPC_SECTIONS_H | 
 | #define _ASM_POWERPC_SECTIONS_H | 
 | #ifdef __KERNEL__ | 
 |  | 
 | #include <linux/elf.h> | 
 | #include <linux/uaccess.h> | 
 | #include <asm-generic/sections.h> | 
 |  | 
 | #ifdef __powerpc64__ | 
 |  | 
 | extern char __end_interrupts[]; | 
 |  | 
 | extern char __prom_init_toc_start[]; | 
 | extern char __prom_init_toc_end[]; | 
 |  | 
 | static inline int in_kernel_text(unsigned long addr) | 
 | { | 
 | 	if (addr >= (unsigned long)_stext && addr < (unsigned long)__init_end) | 
 | 		return 1; | 
 |  | 
 | 	return 0; | 
 | } | 
 |  | 
 | static inline int overlaps_kernel_text(unsigned long start, unsigned long end) | 
 | { | 
 | 	return start < (unsigned long)__init_end && | 
 | 		(unsigned long)_stext < end; | 
 | } | 
 |  | 
 | #undef dereference_function_descriptor | 
 | static inline void *dereference_function_descriptor(void *ptr) | 
 | { | 
 | 	struct ppc64_opd_entry *desc = ptr; | 
 | 	void *p; | 
 |  | 
 | 	if (!probe_kernel_address(&desc->funcaddr, p)) | 
 | 		ptr = p; | 
 | 	return ptr; | 
 | } | 
 |  | 
 | #endif | 
 |  | 
 | #endif /* __KERNEL__ */ | 
 | #endif	/* _ASM_POWERPC_SECTIONS_H */ |