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