2 * Minimalist Kernel Debugger
4 * Copyright (C) 1999 Silicon Graphics, Inc.
5 * Copyright (C) Scott Lurndal (slurn@engr.sgi.com)
6 * Copyright (C) Scott Foehner (sfoehner@engr.sgi.com)
7 * Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com)
9 * See the file LIA-COPYRIGHT for additional information.
11 * Written March 1999 by Scott Lurndal at Silicon Graphics, Inc.
14 * Richard Bass 1999/07/20
15 * Many bug fixes and enhancements.
18 * Scott Lurndal 1999/12/12
21 #if !defined(_ASM_KDB_H)
24 * KDB_ENTER() is a macro which causes entry into the kernel
25 * debugger from any point in the kernel code stream. If it
26 * is intended to be used from interrupt level, it must use
27 * a non-maskable entry method.
29 #define KDB_ENTER() kdb(KDB_REASON_CALL,0,0);
32 # if ELFCLASSM == ELFCLASS32
33 # define ElfW(x) Elf32_ ## x
34 # define ELFW(x) ELF32_ ## x
36 # define ElfW(x) Elf64_ ## x
37 # define ELFW(x) ELF64_ ## x
42 * Define the exception frame for this architecture
45 typedef struct pt_regs *kdb_eframe_t;
48 * Needed for exported symbols.
50 typedef unsigned long kdb_machreg_t;
52 #define kdb_machreg_fmt "0x%016lx"
53 #define kdb_machreg_fmt0 "0x%016lx"
54 #define kdb_bfd_vma_fmt "0x%016lx"
55 #define kdb_bfd_vma_fmt0 "0x%016lx"
56 #define kdb_elfw_addr_fmt "0x%016lx"
57 #define kdb_elfw_addr_fmt0 "0x%016lx"
60 * Per cpu arch specific kdb state. Must be in range 0xff000000.
62 #define KDB_STATE_A_IF 0x01000000 /* Saved IF flag */
65 * Interface from kernel trap handling code to kernel debugger.
67 extern int kdba_callback_die(struct pt_regs *, int, long, void*);
68 extern int kdba_callback_bp(struct pt_regs *, int, long, void*);
69 extern int kdba_callback_debug(struct pt_regs *, int, long, void *);
71 #include <linux/types.h>
72 extern int kdba_putarea_size(unsigned long to_xxx, void *from, size_t size);
73 extern int kdba_getarea_size(void *to, unsigned long from_xxx, size_t size);
76 kdba_verify_rw(unsigned long addr, size_t size)
78 unsigned char data[size];
79 return(kdba_getarea_size(data, addr, size) || kdba_putarea_size(addr, data, size));
82 #endif /* ASM_KDB_H */