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

uprobes.h (1304B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2#ifndef _ASM_UPROBES_H
      3#define _ASM_UPROBES_H
      4/*
      5 * User-space Probes (UProbes) for sparc
      6 *
      7 * Copyright (C) 2013 Oracle, Inc.
      8 *
      9 * Authors:
     10 *     Jose E. Marchesi <jose.marchesi@oracle.com>
     11 *	Eric Saint Etienne <eric.saint.etienne@oracle.com>
     12 */
     13
     14typedef u32 uprobe_opcode_t;
     15
     16#define MAX_UINSN_BYTES		4
     17#define UPROBE_XOL_SLOT_BYTES	(MAX_UINSN_BYTES * 2)
     18
     19#define UPROBE_SWBP_INSN_SIZE	4
     20#define UPROBE_SWBP_INSN	0x91d02073 /* ta 0x73 */
     21#define UPROBE_STP_INSN		0x91d02074 /* ta 0x74 */
     22
     23#define ANNUL_BIT (1 << 29)
     24
     25struct arch_uprobe {
     26	union {
     27		u8  insn[MAX_UINSN_BYTES];
     28		u32 ixol;
     29	};
     30};
     31
     32struct arch_uprobe_task {
     33	u64 saved_tpc;
     34	u64 saved_tnpc;
     35};
     36
     37struct task_struct;
     38struct notifier_block;
     39
     40extern int  arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
     41extern int  arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
     42extern int  arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
     43extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);
     44extern int  arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data);
     45extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
     46
     47#endif	/* _ASM_UPROBES_H */