1b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells/* MN10300 Kernel Probes support
2b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells *
3b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
4b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * Written by Mark Salter (msalter@redhat.com)
5b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells *
6b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * This program is free software; you can redistribute it and/or modify
7b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * it under the terms of the GNU General Public Licence as published by
8b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * the Free Software Foundation; either version 2 of the Licence, or
9b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * (at your option) any later version.
10b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells *
11b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * This program is distributed in the hope that it will be useful,
12b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * but WITHOUT ANY WARRANTY; without even the implied warranty of
13b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * GNU General Public Licence for more details.
15b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells *
16b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * You should have received a copy of the GNU General Public Licence
17b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * along with this program; if not, write to the Free Software
18b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells *
20b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells */
21b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#ifndef _ASM_KPROBES_H
22b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#define _ASM_KPROBES_H
23b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
24b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#include <linux/types.h>
25b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#include <linux/ptrace.h>
26b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
27b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howellsstruct kprobe;
28b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
29b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howellstypedef unsigned char kprobe_opcode_t;
30b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#define BREAKPOINT_INSTRUCTION	0xff
31b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#define MAX_INSN_SIZE 8
32b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#define MAX_STACK_SIZE 128
33b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
34b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells/* Architecture specific copy of original instruction */
35b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howellsstruct arch_specific_insn {
36b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells	/*  copy of original instruction
37b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells	 */
38b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells	kprobe_opcode_t insn[MAX_INSN_SIZE];
39b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells};
40b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
41b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howellsextern const int kretprobe_blacklist_size;
42b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
43b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howellsextern int kprobe_exceptions_notify(struct notifier_block *self,
44b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells				    unsigned long val, void *data);
45b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
46b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#define flush_insn_slot(p)  do {} while (0)
47b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
48b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howellsextern void arch_remove_kprobe(struct kprobe *p);
49b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells
50b920de1b77b72ca9432ac3f97edb26541e65e5ddDavid Howells#endif /* _ASM_KPROBES_H */
51