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

debug.h (1886B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
      4 */
      5#ifndef _ASM_POWERPC_DEBUG_H
      6#define _ASM_POWERPC_DEBUG_H
      7
      8#include <asm/hw_breakpoint.h>
      9
     10struct pt_regs;
     11
     12#if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC_CORE)
     13
     14extern int (*__debugger)(struct pt_regs *regs);
     15extern int (*__debugger_ipi)(struct pt_regs *regs);
     16extern int (*__debugger_bpt)(struct pt_regs *regs);
     17extern int (*__debugger_sstep)(struct pt_regs *regs);
     18extern int (*__debugger_iabr_match)(struct pt_regs *regs);
     19extern int (*__debugger_break_match)(struct pt_regs *regs);
     20extern int (*__debugger_fault_handler)(struct pt_regs *regs);
     21
     22#define DEBUGGER_BOILERPLATE(__NAME) \
     23static inline int __NAME(struct pt_regs *regs) \
     24{ \
     25	if (unlikely(__ ## __NAME)) \
     26		return __ ## __NAME(regs); \
     27	return 0; \
     28}
     29
     30DEBUGGER_BOILERPLATE(debugger)
     31DEBUGGER_BOILERPLATE(debugger_ipi)
     32DEBUGGER_BOILERPLATE(debugger_bpt)
     33DEBUGGER_BOILERPLATE(debugger_sstep)
     34DEBUGGER_BOILERPLATE(debugger_iabr_match)
     35DEBUGGER_BOILERPLATE(debugger_break_match)
     36DEBUGGER_BOILERPLATE(debugger_fault_handler)
     37
     38#else
     39static inline int debugger(struct pt_regs *regs) { return 0; }
     40static inline int debugger_ipi(struct pt_regs *regs) { return 0; }
     41static inline int debugger_bpt(struct pt_regs *regs) { return 0; }
     42static inline int debugger_sstep(struct pt_regs *regs) { return 0; }
     43static inline int debugger_iabr_match(struct pt_regs *regs) { return 0; }
     44static inline int debugger_break_match(struct pt_regs *regs) { return 0; }
     45static inline int debugger_fault_handler(struct pt_regs *regs) { return 0; }
     46#endif
     47
     48void __set_breakpoint(int nr, struct arch_hw_breakpoint *brk);
     49bool ppc_breakpoint_available(void);
     50#ifdef CONFIG_PPC_ADV_DEBUG_REGS
     51extern void do_send_trap(struct pt_regs *regs, unsigned long address,
     52			 unsigned long error_code, int brkpt);
     53#endif
     54
     55#endif /* _ASM_POWERPC_DEBUG_H */