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