15f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen/*
25f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen * Kernel Probes (KProbes)
35f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen *
45f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen * Copyright (C) 2005-2006 Atmel Corporation
55f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen * Copyright (C) IBM Corporation, 2002, 2004
65f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen *
75f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen * This program is free software; you can redistribute it and/or modify
85f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen * it under the terms of the GNU General Public License version 2 as
95f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen * published by the Free Software Foundation.
105f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen */
115f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#ifndef __ASM_AVR32_KPROBES_H
125f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#define __ASM_AVR32_KPROBES_H
135f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
145f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#include <linux/types.h>
155f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
165f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoentypedef u16	kprobe_opcode_t;
175f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#define BREAKPOINT_INSTRUCTION	0xd673	/* breakpoint */
185f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#define MAX_INSN_SIZE		2
19dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen#define MAX_STACK_SIZE		64	/* 32 would probably be OK */
205f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
21f438d914b220051d4cbc65cbc5d98e163c85c93bMasami Hiramatsu#define kretprobe_blacklist_size 0
22f438d914b220051d4cbc65cbc5d98e163c85c93bMasami Hiramatsu
235f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#define arch_remove_kprobe(p)	do { } while (0)
245f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
255f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen/* Architecture specific copy of original instruction */
265f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoenstruct arch_specific_insn {
275f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen	kprobe_opcode_t	insn[MAX_INSN_SIZE];
285f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen};
295f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
30dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsenstruct prev_kprobe {
31dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen	struct kprobe *kp;
32dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen	unsigned int status;
33dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen};
34dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen
35dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen/* per-cpu kprobe control block */
36dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsenstruct kprobe_ctlblk {
37dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen	unsigned int kprobe_status;
38dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen	struct prev_kprobe prev_kprobe;
39dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen	struct pt_regs jprobe_saved_regs;
40dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen	char jprobes_stack[MAX_STACK_SIZE];
41dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen};
42dbc0d691a4dd7787efd94aa26fe7682a457e53d8Eirik Aanonsen
439caebec7b8093574fca5a334a1939530872d75e3Christoph Hellwigextern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
445f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoenextern int kprobe_exceptions_notify(struct notifier_block *self,
455f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen				    unsigned long val, void *data);
465f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
475f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#define flush_insn_slot(p)	do { } while (0)
485f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen
495f97f7f9400de47ae837170bb274e90ad3934386Haavard Skinnemoen#endif /* __ASM_AVR32_KPROBES_H */
50