75 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * Common low level (register) ptrace helpers | ||
|  |  * | ||
|  |  * Copyright 2004-2011 Analog Devices Inc. | ||
|  |  * | ||
|  |  * Licensed under the GPL-2 or later. | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef __ASM_GENERIC_PTRACE_H__
 | ||
|  | #define __ASM_GENERIC_PTRACE_H__
 | ||
|  | 
 | ||
|  | #ifndef __ASSEMBLY__
 | ||
|  | 
 | ||
|  | /* Helpers for working with the instruction pointer */ | ||
|  | #ifndef GET_IP
 | ||
|  | #define GET_IP(regs) ((regs)->pc)
 | ||
|  | #endif
 | ||
|  | #ifndef SET_IP
 | ||
|  | #define SET_IP(regs, val) (GET_IP(regs) = (val))
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | static inline unsigned long instruction_pointer(struct pt_regs *regs) | ||
|  | { | ||
|  | 	return GET_IP(regs); | ||
|  | } | ||
|  | static inline void instruction_pointer_set(struct pt_regs *regs, | ||
|  |                                            unsigned long val) | ||
|  | { | ||
|  | 	SET_IP(regs, val); | ||
|  | } | ||
|  | 
 | ||
|  | #ifndef profile_pc
 | ||
|  | #define profile_pc(regs) instruction_pointer(regs)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /* Helpers for working with the user stack pointer */ | ||
|  | #ifndef GET_USP
 | ||
|  | #define GET_USP(regs) ((regs)->usp)
 | ||
|  | #endif
 | ||
|  | #ifndef SET_USP
 | ||
|  | #define SET_USP(regs, val) (GET_USP(regs) = (val))
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | static inline unsigned long user_stack_pointer(struct pt_regs *regs) | ||
|  | { | ||
|  | 	return GET_USP(regs); | ||
|  | } | ||
|  | static inline void user_stack_pointer_set(struct pt_regs *regs, | ||
|  |                                           unsigned long val) | ||
|  | { | ||
|  | 	SET_USP(regs, val); | ||
|  | } | ||
|  | 
 | ||
|  | /* Helpers for working with the frame pointer */ | ||
|  | #ifndef GET_FP
 | ||
|  | #define GET_FP(regs) ((regs)->fp)
 | ||
|  | #endif
 | ||
|  | #ifndef SET_FP
 | ||
|  | #define SET_FP(regs, val) (GET_FP(regs) = (val))
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | static inline unsigned long frame_pointer(struct pt_regs *regs) | ||
|  | { | ||
|  | 	return GET_FP(regs); | ||
|  | } | ||
|  | static inline void frame_pointer_set(struct pt_regs *regs, | ||
|  |                                      unsigned long val) | ||
|  | { | ||
|  | 	SET_FP(regs, val); | ||
|  | } | ||
|  | 
 | ||
|  | #endif /* __ASSEMBLY__ */
 | ||
|  | 
 | ||
|  | #endif
 |