linux/arch/xtensa/include/asm/hw_breakpoint.h
<<
>>
Prefs
   1/*
   2 * Xtensa hardware breakpoints/watchpoints handling functions
   3 *
   4 * This file is subject to the terms and conditions of the GNU General Public
   5 * License.  See the file "COPYING" in the main directory of this archive
   6 * for more details.
   7 *
   8 * Copyright (C) 2016 Cadence Design Systems Inc.
   9 */
  10
  11#ifndef __ASM_XTENSA_HW_BREAKPOINT_H
  12#define __ASM_XTENSA_HW_BREAKPOINT_H
  13
  14#ifdef CONFIG_HAVE_HW_BREAKPOINT
  15
  16#include <linux/kdebug.h>
  17#include <linux/types.h>
  18#include <uapi/linux/hw_breakpoint.h>
  19
  20/* Breakpoint */
  21#define XTENSA_BREAKPOINT_EXECUTE       0
  22
  23/* Watchpoints */
  24#define XTENSA_BREAKPOINT_LOAD          1
  25#define XTENSA_BREAKPOINT_STORE         2
  26
  27struct arch_hw_breakpoint {
  28        unsigned long address;
  29        u16 len;
  30        u16 type;
  31};
  32
  33struct perf_event_attr;
  34struct perf_event;
  35struct pt_regs;
  36struct task_struct;
  37
  38int hw_breakpoint_slots(int type);
  39int arch_check_bp_in_kernelspace(struct arch_hw_breakpoint *hw);
  40int hw_breakpoint_arch_parse(struct perf_event *bp,
  41                             const struct perf_event_attr *attr,
  42                             struct arch_hw_breakpoint *hw);
  43int hw_breakpoint_exceptions_notify(struct notifier_block *unused,
  44                                    unsigned long val, void *data);
  45
  46int arch_install_hw_breakpoint(struct perf_event *bp);
  47void arch_uninstall_hw_breakpoint(struct perf_event *bp);
  48void hw_breakpoint_pmu_read(struct perf_event *bp);
  49int check_hw_breakpoint(struct pt_regs *regs);
  50void clear_ptrace_hw_breakpoint(struct task_struct *tsk);
  51
  52#else
  53
  54struct task_struct;
  55
  56static inline void clear_ptrace_hw_breakpoint(struct task_struct *tsk)
  57{
  58}
  59
  60#endif /* CONFIG_HAVE_HW_BREAKPOINT */
  61#endif /* __ASM_XTENSA_HW_BREAKPOINT_H */
  62