2 * linux/arch/alpha/kernel/err_impl.h
4 * Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation)
6 * Contains declarations and macros to support Alpha error handling
11 * SCB Vector definitions
13 #define SCB_Q_SYSERR 0x620
14 #define SCB_Q_PROCERR 0x630
15 #define SCB_Q_SYSMCHK 0x660
16 #define SCB_Q_PROCMCHK 0x670
17 #define SCB_Q_SYSEVENT 0x680
20 * Disposition definitions for logout frame parser
22 #define MCHK_DISPOSITION_UNKNOWN_ERROR 0x00
23 #define MCHK_DISPOSITION_REPORT 0x01
24 #define MCHK_DISPOSITION_DISMISS 0x02
27 * Error Log definitions
33 #define EL_CLASS__TERMINATION (0)
34 # define EL_TYPE__TERMINATION__TERMINATION (0)
35 #define EL_CLASS__HEADER (5)
36 # define EL_TYPE__HEADER__SYSTEM_ERROR_FRAME (1)
37 # define EL_TYPE__HEADER__SYSTEM_EVENT_FRAME (2)
38 # define EL_TYPE__HEADER__HALT_FRAME (3)
39 # define EL_TYPE__HEADER__LOGOUT_FRAME (19)
40 #define EL_CLASS__GENERAL_NOTIFICATION (9)
41 #define EL_CLASS__PCI_ERROR_FRAME (11)
42 #define EL_CLASS__REGATTA_FAMILY (12)
43 # define EL_TYPE__REGATTA__PROCESSOR_ERROR_FRAME (1)
44 # define EL_TYPE__REGATTA__SYSTEM_ERROR_FRAME (2)
45 # define EL_TYPE__REGATTA__ENVIRONMENTAL_FRAME (3)
46 # define EL_TYPE__REGATTA__TITAN_PCHIP0_EXTENDED (8)
47 # define EL_TYPE__REGATTA__TITAN_PCHIP1_EXTENDED (9)
48 # define EL_TYPE__REGATTA__TITAN_MEMORY_EXTENDED (10)
49 # define EL_TYPE__REGATTA__PROCESSOR_DBL_ERROR_HALT (11)
50 # define EL_TYPE__REGATTA__SYSTEM_DBL_ERROR_HALT (12)
51 #define EL_CLASS__PAL (14)
52 # define EL_TYPE__PAL__LOGOUT_FRAME (1)
53 # define EL_TYPE__PAL__EV7_PROCESSOR (4)
54 # define EL_TYPE__PAL__EV7_ZBOX (5)
55 # define EL_TYPE__PAL__EV7_RBOX (6)
56 # define EL_TYPE__PAL__EV7_IO (7)
71 u16 length; /* length of header (in bytes) */
72 u16 class; /* header class and type... */
73 u16 type; /* ...determine content */
74 u16 revision; /* header revision */
76 struct { /* Class 5, Type 1 - System Error */
78 u32 frame_packet_count;
80 struct { /* Class 5, Type 2 - System Event */
81 union el_timestamp timestamp;
83 u32 frame_packet_count;
85 struct { /* Class 5, Type 3 - Double Error Halt */
88 union el_timestamp timestamp;
90 u32 frame_packet_count;
92 struct { /* Clasee 5, Type 19 - Logout Frame Header */
98 struct { /* Class 12 - Regatta */
108 struct el_subpacket_annotation {
109 struct el_subpacket_annotation *next;
116 #define SUBPACKET_ANNOTATION(c, t, r, d, a) {NULL, (c), (t), (r), (d), (a)}
118 struct el_subpacket_handler {
119 struct el_subpacket_handler *next;
121 struct el_subpacket *(*handler)(struct el_subpacket *);
123 #define SUBPACKET_HANDLER_INIT(c, h) {NULL, (c), (h)}
126 * Extract a field from a register given it's name. defines
127 * for the LSB (__S - shift count) and bitmask (__M) are required
129 #define EXTRACT(u, f) (((u) >> f##__S) & f##__M)
134 extern char *err_print_prefix;
136 extern void mchk_dump_mem(void *, size_t, char **);
137 extern void mchk_dump_logout_frame(struct el_common *);
138 extern void ev7_register_error_handlers(void);
139 extern void ev7_machine_check(u64, u64, struct pt_regs *);
140 extern void ev6_register_error_handlers(void);
141 extern int ev6_process_logout_frame(struct el_common *, int);
142 extern void ev6_machine_check(u64, u64, struct pt_regs *);
143 extern struct el_subpacket *el_process_subpacket(struct el_subpacket *);
144 extern void el_annotate_subpacket(struct el_subpacket *);
145 extern void cdl_check_console_data_log(void);
146 extern int cdl_register_subpacket_annotation(struct el_subpacket_annotation *);
147 extern int cdl_register_subpacket_handler(struct el_subpacket_handler *);
152 extern void marvel_machine_check(u64, u64, struct pt_regs *);
153 extern void marvel_register_error_handlers(void);
158 extern int titan_process_logout_frame(struct el_common *, int);
159 extern void titan_machine_check(u64, u64, struct pt_regs *);
160 extern void titan_register_error_handlers(void);
161 extern int privateer_process_logout_frame(struct el_common *, int);
162 extern void privateer_machine_check(u64, u64, struct pt_regs *);