Fix last change.
[linux-flexiantxendom0-3.2.10.git] / include / asm-ppc64 / kdb.h
1 /*
2  * Minimalist Kernel Debugger
3  *
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)
8  *
9  * See the file LIA-COPYRIGHT for additional information.
10  *
11  * Written March 1999 by Scott Lurndal at Silicon Graphics, Inc.
12  *
13  * Modifications from:
14  *      Richard Bass                    1999/07/20
15  *              Many bug fixes and enhancements.
16  *      Scott Foehner
17  *              Port to ia64
18  *      Scott Lurndal                   1999/12/12
19  *              v1.0 restructuring.
20  */
21 #if !defined(_ASM_KDB_H)
22 #define _ASM_KDB_H
23         /*
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.
28          */
29 #define KDB_ENTER()     kdb(KDB_REASON_CALL,0,0);
30
31 #ifndef ElfW
32 # if ELFCLASSM == ELFCLASS32
33 #  define ElfW(x)  Elf32_ ## x
34 #  define ELFW(x)  ELF32_ ## x
35 # else
36 #  define ElfW(x)  Elf64_ ## x
37 #  define ELFW(x)  ELF64_ ## x
38 # endif
39 #endif
40
41         /*
42          * Define the exception frame for this architecture
43          */
44 struct pt_regs;
45 typedef struct pt_regs  *kdb_eframe_t;
46
47         /*
48          * Needed for exported symbols.
49          */
50 typedef unsigned long kdb_machreg_t;
51
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"
58
59         /*
60          * Per cpu arch specific kdb state.  Must be in range 0xff000000.
61          */
62 #define KDB_STATE_A_IF          0x01000000      /* Saved IF flag */
63
64          /*
65           * Interface from kernel trap handling code to kernel debugger.
66           */
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 *);
70
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);
74
75 static inline int
76 kdba_verify_rw(unsigned long addr, size_t size)
77 {
78         unsigned char data[size];
79         return(kdba_getarea_size(data, addr, size) || kdba_putarea_size(addr, data, size));
80 }
81
82 #endif  /* ASM_KDB_H */