cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hw_breakpoint.h (1597B)


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