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
*);