aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/kgdb.h
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2012-10-30 03:20:56 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2012-10-30 03:20:56 -0400
commit53279f36dccffc26ff536003fd6bb97cc21c3b82 (patch)
tree9d16e497c0e4158c7c054c479bd0e9ff0388d7bb /include/linux/kgdb.h
parenta6e8c0a25377e27958b11b20e1927885ae7c9857 (diff)
parent8f0d8163b50e01f398b14bcd4dc039ac5ab18d64 (diff)
Merge tag 'v3.7-rc3' into next to sync up with recent USB and MFD changes
Diffstat (limited to 'include/linux/kgdb.h')
-rw-r--r--include/linux/kgdb.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
index c4d2fc194ede..4dff0c6ed58f 100644
--- a/include/linux/kgdb.h
+++ b/include/linux/kgdb.h
@@ -240,6 +240,7 @@ extern void kgdb_arch_late(void);
240 * hardware breakpoints. 240 * hardware breakpoints.
241 * @correct_hw_break: Allow an architecture to specify how to correct the 241 * @correct_hw_break: Allow an architecture to specify how to correct the
242 * hardware debug registers. 242 * hardware debug registers.
243 * @enable_nmi: Manage NMI-triggered entry to KGDB
243 */ 244 */
244struct kgdb_arch { 245struct kgdb_arch {
245 unsigned char gdb_bpt_instr[BREAK_INSTR_SIZE]; 246 unsigned char gdb_bpt_instr[BREAK_INSTR_SIZE];
@@ -252,6 +253,8 @@ struct kgdb_arch {
252 void (*disable_hw_break)(struct pt_regs *regs); 253 void (*disable_hw_break)(struct pt_regs *regs);
253 void (*remove_all_hw_break)(void); 254 void (*remove_all_hw_break)(void);
254 void (*correct_hw_break)(void); 255 void (*correct_hw_break)(void);
256
257 void (*enable_nmi)(bool on);
255}; 258};
256 259
257/** 260/**
@@ -283,6 +286,16 @@ extern struct kgdb_arch arch_kgdb_ops;
283 286
284extern unsigned long __weak kgdb_arch_pc(int exception, struct pt_regs *regs); 287extern unsigned long __weak kgdb_arch_pc(int exception, struct pt_regs *regs);
285 288
289#ifdef CONFIG_SERIAL_KGDB_NMI
290extern int kgdb_register_nmi_console(void);
291extern int kgdb_unregister_nmi_console(void);
292extern bool kgdb_nmi_poll_knock(void);
293#else
294static inline int kgdb_register_nmi_console(void) { return 0; }
295static inline int kgdb_unregister_nmi_console(void) { return 0; }
296static inline bool kgdb_nmi_poll_knock(void) { return 1; }
297#endif
298
286extern int kgdb_register_io_module(struct kgdb_io *local_kgdb_io_ops); 299extern int kgdb_register_io_module(struct kgdb_io *local_kgdb_io_ops);
287extern void kgdb_unregister_io_module(struct kgdb_io *local_kgdb_io_ops); 300extern void kgdb_unregister_io_module(struct kgdb_io *local_kgdb_io_ops);
288extern struct kgdb_io *dbg_io_ops; 301extern struct kgdb_io *dbg_io_ops;