Commit | Line | Data |
---|---|---|
fe54616d YS |
1 | /* |
2 | * linux/arch/h8300/kernel/ptrace_h8s.c | |
3 | * ptrace cpu depend helper functions | |
4 | * | |
5 | * Yoshinori Sato <ysato@users.sourceforge.jp> | |
6 | * | |
7 | * This file is subject to the terms and conditions of the GNU General | |
8 | * Public License. See the file COPYING in the main directory of | |
9 | * this archive for more details. | |
10 | */ | |
11 | ||
12 | #include <linux/linkage.h> | |
13 | #include <linux/sched.h> | |
14 | #include <linux/errno.h> | |
15 | #include <asm/ptrace.h> | |
16 | ||
17 | #define CCR_MASK 0x6f | |
18 | #define EXR_TRACE 0x80 | |
19 | ||
20 | /* disable singlestep */ | |
21 | void user_disable_single_step(struct task_struct *child) | |
22 | { | |
23 | unsigned char exr; | |
24 | ||
25 | exr = h8300_get_reg(child, PT_EXR); | |
26 | exr &= ~EXR_TRACE; | |
27 | h8300_put_reg(child, PT_EXR, exr); | |
28 | } | |
29 | ||
30 | /* enable singlestep */ | |
31 | void user_enable_single_step(struct task_struct *child) | |
32 | { | |
33 | unsigned char exr; | |
34 | ||
35 | exr = h8300_get_reg(child, PT_EXR); | |
36 | exr |= EXR_TRACE; | |
37 | h8300_put_reg(child, PT_EXR, exr); | |
38 | } | |
39 | ||
40 | asmlinkage void trace_trap(unsigned long bp) | |
41 | { | |
42 | (void)bp; | |
43 | force_sig(SIGTRAP, current); | |
44 | } |