summaryrefslogtreecommitdiffstats
path: root/runtime/ptrace_compatibility.h
blob: 939c3b56d64acb4045267939b6906a72b65842c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef _PTRACE_COMPATIBILITY_H_
#define _PTRACE_COMPATIBILITY_H_

#include <linux/ptrace.h>

/* Older kernel's linux/ptrace.h don't define
 * arch_has_single_step()/arch_has_block_step(). */

#ifndef arch_has_single_step

#include <linux/tracehook.h>

/**
 * arch_has_single_step - does this CPU support user-mode single-step?
 *
 * If this is defined, then there must be function declarations or
 * inlines for user_enable_single_step() and user_disable_single_step().
 * arch_has_single_step() should evaluate to nonzero iff the machine
 * supports instruction single-step for user mode.
 * It can be a constant or it can test a CPU feature bit.
 */

#ifdef ARCH_HAS_SINGLE_STEP
#define arch_has_single_step()	(ARCH_HAS_SINGLE_STEP)
#else
#define arch_has_single_step()	(0)
#endif	/* ARCH_HAS_SINGLE_STEP */

#endif	/* arch_has_single_step */

#ifndef arch_has_block_step
/**
 * arch_has_block_step - does this CPU support user-mode block-step?
 *
 * If this is defined, then there must be a function declaration or inline
 * for user_enable_block_step(), and arch_has_single_step() must be defined
 * too.  arch_has_block_step() should evaluate to nonzero iff the machine
 * supports step-until-branch for user mode.  It can be a constant or it
 * can test a CPU feature bit.
 */

#ifdef ARCH_HAS_BLOCK_STEP
#define arch_has_block_step()	(ARCH_HAS_BLOCK_STEP)
#else
#define arch_has_block_step()   (0)
#endif	/* ARCH_HAS_BLOCK_STEP */

#endif	/* arch_has_block_step */

#endif	/* _PTRACE_COMPATIBILITY_H_ */