| Jon Loeliger | fbcd54b | 2005-09-17 10:39:46 -0500 | [diff] [blame] | 1 | #ifndef _ASM_POWERPC_SECTIONS_H | 
 | 2 | #define _ASM_POWERPC_SECTIONS_H | 
| Arnd Bergmann | 88ced03 | 2005-12-16 22:43:46 +0100 | [diff] [blame] | 3 | #ifdef __KERNEL__ | 
| Jon Loeliger | fbcd54b | 2005-09-17 10:39:46 -0500 | [diff] [blame] | 4 |  | 
| James Bottomley | 2d291e9 | 2008-09-09 14:04:18 +0000 | [diff] [blame] | 5 | #include <linux/elf.h> | 
 | 6 | #include <linux/uaccess.h> | 
| Jon Loeliger | fbcd54b | 2005-09-17 10:39:46 -0500 | [diff] [blame] | 7 | #include <asm-generic/sections.h> | 
 | 8 |  | 
 | 9 | #ifdef __powerpc64__ | 
 | 10 |  | 
| Anton Blanchard | d715e43 | 2011-11-14 12:54:47 +0000 | [diff] [blame] | 11 | extern char __end_interrupts[]; | 
| Jon Loeliger | fbcd54b | 2005-09-17 10:39:46 -0500 | [diff] [blame] | 12 |  | 
 | 13 | static inline int in_kernel_text(unsigned long addr) | 
 | 14 | { | 
 | 15 | 	if (addr >= (unsigned long)_stext && addr < (unsigned long)__init_end) | 
 | 16 | 		return 1; | 
 | 17 |  | 
 | 18 | 	return 0; | 
 | 19 | } | 
 | 20 |  | 
| Paul Mackerras | 549e815 | 2008-08-30 11:43:47 +1000 | [diff] [blame] | 21 | static inline int overlaps_kernel_text(unsigned long start, unsigned long end) | 
 | 22 | { | 
 | 23 | 	return start < (unsigned long)__init_end && | 
 | 24 | 		(unsigned long)_stext < end; | 
 | 25 | } | 
 | 26 |  | 
| James Bottomley | deac93d | 2008-09-03 20:43:36 -0500 | [diff] [blame] | 27 | #undef dereference_function_descriptor | 
| James Bottomley | 2d291e9 | 2008-09-09 14:04:18 +0000 | [diff] [blame] | 28 | static inline void *dereference_function_descriptor(void *ptr) | 
 | 29 | { | 
 | 30 | 	struct ppc64_opd_entry *desc = ptr; | 
 | 31 | 	void *p; | 
 | 32 |  | 
 | 33 | 	if (!probe_kernel_address(&desc->funcaddr, p)) | 
 | 34 | 		ptr = p; | 
 | 35 | 	return ptr; | 
 | 36 | } | 
| James Bottomley | deac93d | 2008-09-03 20:43:36 -0500 | [diff] [blame] | 37 |  | 
| Jon Loeliger | fbcd54b | 2005-09-17 10:39:46 -0500 | [diff] [blame] | 38 | #endif | 
 | 39 |  | 
| Arnd Bergmann | 88ced03 | 2005-12-16 22:43:46 +0100 | [diff] [blame] | 40 | #endif /* __KERNEL__ */ | 
| Jon Loeliger | fbcd54b | 2005-09-17 10:39:46 -0500 | [diff] [blame] | 41 | #endif	/* _ASM_POWERPC_SECTIONS_H */ |