diff options
Diffstat (limited to 'kernel/arch/arm64/include/asm/hw_breakpoint.h')
-rw-r--r-- | kernel/arch/arm64/include/asm/hw_breakpoint.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/arch/arm64/include/asm/hw_breakpoint.h b/kernel/arch/arm64/include/asm/hw_breakpoint.h index 52b484b6a..9732908bf 100644 --- a/kernel/arch/arm64/include/asm/hw_breakpoint.h +++ b/kernel/arch/arm64/include/asm/hw_breakpoint.h @@ -16,6 +16,9 @@ #ifndef __ASM_HW_BREAKPOINT_H #define __ASM_HW_BREAKPOINT_H +#include <asm/cputype.h> +#include <asm/cpufeature.h> + #ifdef __KERNEL__ struct arch_hw_breakpoint_ctrl { @@ -132,5 +135,23 @@ static inline void ptrace_hw_copy_thread(struct task_struct *task) extern struct pmu perf_ops_bp; +/* Determine number of BRP registers available. */ +static inline int get_num_brps(void) +{ + u64 dfr0 = read_system_reg(SYS_ID_AA64DFR0_EL1); + return 1 + + cpuid_feature_extract_unsigned_field(dfr0, + ID_AA64DFR0_BRPS_SHIFT); +} + +/* Determine number of WRP registers available. */ +static inline int get_num_wrps(void) +{ + u64 dfr0 = read_system_reg(SYS_ID_AA64DFR0_EL1); + return 1 + + cpuid_feature_extract_unsigned_field(dfr0, + ID_AA64DFR0_WRPS_SHIFT); +} + #endif /* __KERNEL__ */ #endif /* __ASM_BREAKPOINT_H */ |