alpha: teach the compiler that BUG doesn't return
[linux-2.6] / include / asm-alpha / err_common.h
1 /*
2  *      linux/include/asm-alpha/err_common.h
3  *
4  *      Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation)
5  *
6  *      Contains declarations and macros to support Alpha error handling
7  *      implementations.
8  */
9
10 #ifndef __ALPHA_ERR_COMMON_H
11 #define __ALPHA_ERR_COMMON_H 1
12
13 /*
14  * SCB Vector definitions
15  */
16 #define SCB_Q_SYSERR    0x620
17 #define SCB_Q_PROCERR   0x630
18 #define SCB_Q_SYSMCHK   0x660
19 #define SCB_Q_PROCMCHK  0x670
20 #define SCB_Q_SYSEVENT  0x680
21
22 /*
23  * Disposition definitions for logout frame parser
24  */
25 #define MCHK_DISPOSITION_UNKNOWN_ERROR          0x00
26 #define MCHK_DISPOSITION_REPORT                 0x01
27 #define MCHK_DISPOSITION_DISMISS                0x02
28
29 /*
30  * Error Log definitions
31  */
32 /*
33  * Types
34  */
35
36 #define EL_CLASS__TERMINATION           (0)
37 #  define EL_TYPE__TERMINATION__TERMINATION             (0)
38 #define EL_CLASS__HEADER                (5)
39 #  define EL_TYPE__HEADER__SYSTEM_ERROR_FRAME           (1)
40 #  define EL_TYPE__HEADER__SYSTEM_EVENT_FRAME           (2)
41 #  define EL_TYPE__HEADER__HALT_FRAME                   (3)
42 #  define EL_TYPE__HEADER__LOGOUT_FRAME                 (19)
43 #define EL_CLASS__GENERAL_NOTIFICATION  (9)
44 #define EL_CLASS__PCI_ERROR_FRAME       (11)
45 #define EL_CLASS__REGATTA_FAMILY        (12)
46 #  define EL_TYPE__REGATTA__PROCESSOR_ERROR_FRAME       (1)
47 #  define EL_TYPE__REGATTA__SYSTEM_ERROR_FRAME          (2)
48 #  define EL_TYPE__REGATTA__ENVIRONMENTAL_FRAME         (3)
49 #  define EL_TYPE__REGATTA__TITAN_PCHIP0_EXTENDED       (8)
50 #  define EL_TYPE__REGATTA__TITAN_PCHIP1_EXTENDED       (9)
51 #  define EL_TYPE__REGATTA__TITAN_MEMORY_EXTENDED       (10)
52 #  define EL_TYPE__REGATTA__PROCESSOR_DBL_ERROR_HALT    (11)
53 #  define EL_TYPE__REGATTA__SYSTEM_DBL_ERROR_HALT       (12)
54 #define EL_CLASS__PAL                   (14)
55 #  define EL_TYPE__PAL__LOGOUT_FRAME                    (1)
56 #  define EL_TYPE__PAL__EV7_PROCESSOR                   (4)
57 #  define EL_TYPE__PAL__EV7_ZBOX                        (5)
58 #  define EL_TYPE__PAL__EV7_RBOX                        (6)
59 #  define EL_TYPE__PAL__EV7_IO                          (7)
60 #  define EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE        (10)
61 #  define EL_TYPE__PAL__ENV__AIRMOVER_FAN               (11)
62 #  define EL_TYPE__PAL__ENV__VOLTAGE                    (12)
63 #  define EL_TYPE__PAL__ENV__INTRUSION                  (13)
64 #  define EL_TYPE__PAL__ENV__POWER_SUPPLY               (14)
65 #  define EL_TYPE__PAL__ENV__LAN                        (15)
66 #  define EL_TYPE__PAL__ENV__HOT_PLUG                   (16)
67
68 union el_timestamp {
69         struct {
70                 u8 second;
71                 u8 minute;
72                 u8 hour;
73                 u8 day;
74                 u8 month;
75                 u8 year;
76         } b;
77         u64 as_int;
78 };
79
80 struct el_subpacket {
81         u16 length;             /* length of header (in bytes)  */
82         u16 class;              /* header class and type...     */
83         u16 type;               /* ...determine content         */
84         u16 revision;           /* header revision              */
85         union {
86                 struct {        /* Class 5, Type 1 - System Error       */
87                         u32 frame_length;
88                         u32 frame_packet_count;                 
89                 } sys_err;                      
90                 struct {        /* Class 5, Type 2 - System Event       */
91                         union el_timestamp timestamp;
92                         u32 frame_length;
93                         u32 frame_packet_count;                 
94                 } sys_event;
95                 struct {        /* Class 5, Type 3 - Double Error Halt  */
96                         u16 halt_code;
97                         u16 reserved;
98                         union el_timestamp timestamp;
99                         u32 frame_length;
100                         u32 frame_packet_count;
101                 } err_halt;
102                 struct {        /* Clasee 5, Type 19 - Logout Frame Header */
103                         u32 frame_length;
104                         u32 frame_flags;
105                         u32 cpu_offset; 
106                         u32 system_offset;
107                 } logout_header;
108                 struct {        /* Class 12 - Regatta                   */
109                         u64 cpuid;
110                         u64 data_start[1];
111                 } regatta_frame;
112                 struct {        /* Raw                                  */
113                         u64 data_start[1];
114                 } raw;
115         } by_type;
116 };
117
118 #endif /* __ALPHA_ERR_COMMON_H */