blob: c195a9ad12551e88e28aedf02a15743f643dc35e [file] [log] [blame]
Anil S Keshavamurthy7213b252005-06-23 00:09:27 -07001#ifndef _IA64_KDEBUG_H
2#define _IA64_KDEBUG_H 1
3/*
4 * include/asm-ia64/kdebug.h
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 *
20 * Copyright (C) Intel Corporation, 2005
21 *
22 * 2005-Apr Rusty Lynch <rusty.lynch@intel.com> and Anil S Keshavamurthy
23 * <anil.s.keshavamurthy@intel.com> adopted from
24 * include/asm-x86_64/kdebug.h
Keith Owens9138d582005-11-07 11:27:13 -080025 *
26 * 2005-Oct Keith Owens <kaos@sgi.com>. Expand notify_die to cover more
27 * events.
Anil S Keshavamurthy7213b252005-06-23 00:09:27 -070028 */
29#include <linux/notifier.h>
30
31struct pt_regs;
32
33struct die_args {
34 struct pt_regs *regs;
35 const char *str;
36 long err;
37 int trapnr;
38 int signr;
39};
40
Keith Owens9138d582005-11-07 11:27:13 -080041extern int register_die_notifier(struct notifier_block *);
42extern int unregister_die_notifier(struct notifier_block *);
Alan Sterne041c682006-03-27 01:16:30 -080043extern struct atomic_notifier_head ia64die_chain;
Anil S Keshavamurthy7213b252005-06-23 00:09:27 -070044
45enum die_val {
46 DIE_BREAK = 1,
Keith Owens9138d582005-11-07 11:27:13 -080047 DIE_FAULT,
48 DIE_OOPS,
Anil S Keshavamurthy7213b252005-06-23 00:09:27 -070049 DIE_PAGE_FAULT,
Keith Owens9138d582005-11-07 11:27:13 -080050 DIE_MACHINE_HALT,
51 DIE_MACHINE_RESTART,
52 DIE_MCA_MONARCH_ENTER,
53 DIE_MCA_MONARCH_PROCESS,
54 DIE_MCA_MONARCH_LEAVE,
55 DIE_MCA_SLAVE_ENTER,
56 DIE_MCA_SLAVE_PROCESS,
57 DIE_MCA_SLAVE_LEAVE,
58 DIE_MCA_RENDZVOUS_ENTER,
59 DIE_MCA_RENDZVOUS_PROCESS,
60 DIE_MCA_RENDZVOUS_LEAVE,
Keith Owens958b1662006-04-03 15:26:12 +100061 DIE_MCA_NEW_TIMEOUT,
62 DIE_INIT_ENTER,
Keith Owens9138d582005-11-07 11:27:13 -080063 DIE_INIT_MONARCH_ENTER,
64 DIE_INIT_MONARCH_PROCESS,
65 DIE_INIT_MONARCH_LEAVE,
66 DIE_INIT_SLAVE_ENTER,
67 DIE_INIT_SLAVE_PROCESS,
68 DIE_INIT_SLAVE_LEAVE,
69 DIE_KDEBUG_ENTER,
70 DIE_KDEBUG_LEAVE,
71 DIE_KDUMP_ENTER,
72 DIE_KDUMP_LEAVE,
Anil S Keshavamurthy7213b252005-06-23 00:09:27 -070073};
74
75static inline int notify_die(enum die_val val, char *str, struct pt_regs *regs,
76 long err, int trap, int sig)
77{
78 struct die_args args = {
79 .regs = regs,
80 .str = str,
81 .err = err,
82 .trapnr = trap,
83 .signr = sig
84 };
85
Alan Sterne041c682006-03-27 01:16:30 -080086 return atomic_notifier_call_chain(&ia64die_chain, val, &args);
Anil S Keshavamurthy7213b252005-06-23 00:09:27 -070087}
88
89#endif