diff options
Diffstat (limited to 'arch/arm/include/asm/ptrace.h')
| -rw-r--r-- | arch/arm/include/asm/ptrace.h | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index 04c99f36ff7..c877654fe3b 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h @@ -27,9 +27,13 @@ struct pt_regs {  #define thumb_mode(regs) (0)  #endif +#ifndef CONFIG_CPU_V7M  #define isa_mode(regs) \ -	((((regs)->ARM_cpsr & PSR_J_BIT) >> 23) | \ -	 (((regs)->ARM_cpsr & PSR_T_BIT) >> 5)) +	((((regs)->ARM_cpsr & PSR_J_BIT) >> (__ffs(PSR_J_BIT) - 1)) | \ +	 (((regs)->ARM_cpsr & PSR_T_BIT) >> (__ffs(PSR_T_BIT)))) +#else +#define isa_mode(regs) 1 /* Thumb */ +#endif  #define processor_mode(regs) \  	((regs)->ARM_cpsr & MODE_MASK) @@ -80,6 +84,12 @@ static inline long regs_return_value(struct pt_regs *regs)  #define instruction_pointer(regs)	(regs)->ARM_pc +static inline void instruction_pointer_set(struct pt_regs *regs, +					   unsigned long val) +{ +	instruction_pointer(regs) = val; +} +  #ifdef CONFIG_SMP  extern unsigned long profile_pc(struct pt_regs *regs);  #else  | 
