| /* | |
| * 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 |