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;
  34struct pt_regs;
  35struct task_struct;
  36
  37int hw_breakpoint_slots(int type);
  38int arch_check_bp_in_kernelspace(struct perf_event *bp);
  39int arch_validate_hwbkpt_settings(struct perf_event *bp);
  40int hw_breakpoint_exceptions_notify(struct notifier_block *unused,
  41                                    unsigned long val, void *data);
  42
  43int arch_install_hw_breakpoint(struct perf_event *bp);
  44void arch_uninstall_hw_breakpoint(struct perf_event *bp);
  45void hw_breakpoint_pmu_read(struct perf_event *bp);
  46int check_hw_breakpoint(struct pt_regs *regs);
  47void clear_ptrace_hw_breakpoint(struct task_struct *tsk);
  48
  49#else
  50
  51struct task_struct;
  52
  53static inline void clear_ptrace_hw_breakpoint(struct task_struct *tsk)
  54{
  55}
  56
  57#endif /* CONFIG_HAVE_HW_BREAKPOINT */
  58#endif /* __ASM_XTENSA_HW_BREAKPOINT_H */
  59