home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sh / include / asm / kprobes.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.5 KB  |  59 lines

  1. #ifndef __ASM_SH_KPROBES_H
  2. #define __ASM_SH_KPROBES_H
  3.  
  4. #ifdef CONFIG_KPROBES
  5.  
  6. #include <linux/types.h>
  7. #include <linux/ptrace.h>
  8.  
  9. typedef u16 kprobe_opcode_t;
  10. #define BREAKPOINT_INSTRUCTION    0xc33a
  11.  
  12. #define MAX_INSN_SIZE 16
  13. #define MAX_STACK_SIZE 64
  14. #define MIN_STACK_SIZE(ADDR) (((MAX_STACK_SIZE) < \
  15.     (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) \
  16.     ? (MAX_STACK_SIZE) \
  17.     : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR)))
  18.  
  19. #define regs_return_value(regs)        ((regs)->regs[0])
  20. #define flush_insn_slot(p)        do { } while (0)
  21. #define kretprobe_blacklist_size    0
  22.  
  23. struct kprobe;
  24.  
  25. void arch_remove_kprobe(struct kprobe *);
  26. void kretprobe_trampoline(void);
  27. void jprobe_return_end(void);
  28.  
  29. /* Architecture specific copy of original instruction*/
  30. struct arch_specific_insn {
  31.     /* copy of the original instruction */
  32.     kprobe_opcode_t insn[MAX_INSN_SIZE];
  33. };
  34.  
  35. struct prev_kprobe {
  36.     struct kprobe *kp;
  37.     unsigned long status;
  38. };
  39.  
  40. /* per-cpu kprobe control block */
  41. struct kprobe_ctlblk {
  42.     unsigned long kprobe_status;
  43.     unsigned long jprobe_saved_r15;
  44.     struct pt_regs jprobe_saved_regs;
  45.     kprobe_opcode_t jprobes_stack[MAX_STACK_SIZE];
  46.     struct prev_kprobe prev_kprobe;
  47. };
  48.  
  49. extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
  50. extern int kprobe_exceptions_notify(struct notifier_block *self,
  51.                     unsigned long val, void *data);
  52. extern int kprobe_handle_illslot(unsigned long pc);
  53. #else
  54.  
  55. #define kprobe_handle_illslot(pc)    (-1)
  56.  
  57. #endif /* CONFIG_KPROBES */
  58. #endif /* __ASM_SH_KPROBES_H */
  59.