commented early_printk patch because of rejects.
[linux-flexiantxendom0-3.2.10.git] / arch / alpha / kernel / err_impl.h
index 32c709a..64e9b73 100644 (file)
@@ -7,103 +7,9 @@
  *     implementations.
  */
 
-/*
- * SCB Vector definitions
- */
-#define SCB_Q_SYSERR   0x620
-#define SCB_Q_PROCERR  0x630
-#define SCB_Q_SYSMCHK  0x660
-#define SCB_Q_PROCMCHK 0x670
-#define SCB_Q_SYSEVENT 0x680
-
-/*
- * Disposition definitions for logout frame parser
- */
-#define MCHK_DISPOSITION_UNKNOWN_ERROR         0x00
-#define MCHK_DISPOSITION_REPORT                        0x01
-#define MCHK_DISPOSITION_DISMISS               0x02
-
-/*
- * Error Log definitions
- */
-/*
- * Types
- */
-
-#define EL_CLASS__TERMINATION          (0)
-#  define EL_TYPE__TERMINATION__TERMINATION            (0)
-#define EL_CLASS__HEADER               (5)
-#  define EL_TYPE__HEADER__SYSTEM_ERROR_FRAME          (1)
-#  define EL_TYPE__HEADER__SYSTEM_EVENT_FRAME          (2)
-#  define EL_TYPE__HEADER__HALT_FRAME                  (3)
-#  define EL_TYPE__HEADER__LOGOUT_FRAME                        (19)
-#define EL_CLASS__GENERAL_NOTIFICATION (9)
-#define EL_CLASS__PCI_ERROR_FRAME      (11)
-#define EL_CLASS__REGATTA_FAMILY       (12)
-#  define EL_TYPE__REGATTA__PROCESSOR_ERROR_FRAME      (1)
-#  define EL_TYPE__REGATTA__SYSTEM_ERROR_FRAME         (2)
-#  define EL_TYPE__REGATTA__ENVIRONMENTAL_FRAME                (3)
-#  define EL_TYPE__REGATTA__TITAN_PCHIP0_EXTENDED      (8)
-#  define EL_TYPE__REGATTA__TITAN_PCHIP1_EXTENDED      (9)
-#  define EL_TYPE__REGATTA__TITAN_MEMORY_EXTENDED      (10)
-#  define EL_TYPE__REGATTA__PROCESSOR_DBL_ERROR_HALT   (11)
-#  define EL_TYPE__REGATTA__SYSTEM_DBL_ERROR_HALT      (12)
-#define EL_CLASS__PAL                   (14)
-#  define EL_TYPE__PAL__LOGOUT_FRAME                    (1)
-#  define EL_TYPE__PAL__EV7_PROCESSOR                  (4)
-#  define EL_TYPE__PAL__EV7_ZBOX                       (5)
-#  define EL_TYPE__PAL__EV7_RBOX                       (6)
-#  define EL_TYPE__PAL__EV7_IO                         (7)
-
-union el_timestamp {
-       struct {
-               u8 second;
-               u8 minute;
-               u8 hour;
-               u8 day;
-               u8 month;
-               u8 year;
-       } b;
-       u64 as_int;
-};
-
-struct el_subpacket {
-       u16 length;             /* length of header (in bytes)  */
-       u16 class;              /* header class and type...     */
-       u16 type;               /* ...determine content         */
-       u16 revision;           /* header revision              */
-       union {
-               struct {        /* Class 5, Type 1 - System Error       */
-                       u32 frame_length;
-                       u32 frame_packet_count;                 
-               } sys_err;                      
-               struct {        /* Class 5, Type 2 - System Event       */
-                       union el_timestamp timestamp;
-                       u32 frame_length;
-                       u32 frame_packet_count;                 
-               } sys_event;
-               struct {        /* Class 5, Type 3 - Double Error Halt  */
-                       u16 halt_code;
-                       u16 reserved;
-                       union el_timestamp timestamp;
-                       u32 frame_length;
-                       u32 frame_packet_count;
-               } err_halt;
-               struct {        /* Clasee 5, Type 19 - Logout Frame Header */
-                       u32 frame_length;
-                       u32 frame_flags;
-                       u32 cpu_offset; 
-                       u32 system_offset;
-               } logout_header;
-               struct {        /* Class 12 - Regatta                   */
-                       u64 cpuid;
-                       u64 data_start[1];
-               } regatta_frame;
-               struct {        /* Raw                                  */
-                       u64 data_start[1];
-               } raw;
-       } by_type;
-};
+union el_timestamp;
+struct el_subpacket;
+struct ev7_lf_subpackets;
 
 struct el_subpacket_annotation {
        struct el_subpacket_annotation *next;
@@ -123,10 +29,14 @@ struct el_subpacket_handler {
 #define SUBPACKET_HANDLER_INIT(c, h) {NULL, (c), (h)}
 
 /*
- * Extract a field from a register given it's name. defines
+ * Manipulate a field from a register given it's name. defines
  * for the LSB (__S - shift count) and bitmask (__M) are required
+ *
+ * EXTRACT(u, f) - extracts the field and places it at bit position 0
+ * GEN_MASK(f) - creates an in-position mask for the field
  */
 #define EXTRACT(u, f) (((u) >> f##__S) & f##__M)
+#define GEN_MASK(f) ((u64)f##__M << f##__S)
 
 /*
  * err_common.c
@@ -135,11 +45,8 @@ extern char *err_print_prefix;
 
 extern void mchk_dump_mem(void *, size_t, char **);
 extern void mchk_dump_logout_frame(struct el_common *);
-extern void ev7_register_error_handlers(void);
-extern void ev7_machine_check(u64, u64, struct pt_regs *);
-extern void ev6_register_error_handlers(void);
-extern int ev6_process_logout_frame(struct el_common *, int);
-extern void ev6_machine_check(u64, u64, struct pt_regs *);
+extern void el_print_timestamp(union el_timestamp *);
+extern void el_process_subpackets(struct el_subpacket *, int);
 extern struct el_subpacket *el_process_subpacket(struct el_subpacket *);
 extern void el_annotate_subpacket(struct el_subpacket *);
 extern void cdl_check_console_data_log(void);
@@ -147,6 +54,22 @@ extern int cdl_register_subpacket_annotation(struct el_subpacket_annotation *);
 extern int cdl_register_subpacket_handler(struct el_subpacket_handler *);
 
 /*
+ * err_ev7.c
+ */
+extern struct ev7_lf_subpackets *
+ev7_collect_logout_frame_subpackets(struct el_subpacket *,
+                                   struct ev7_lf_subpackets *);
+extern void ev7_register_error_handlers(void);
+extern void ev7_machine_check(u64, u64, struct pt_regs *);
+
+/*
+ * err_ev6.c
+ */
+extern void ev6_register_error_handlers(void);
+extern int ev6_process_logout_frame(struct el_common *, int);
+extern void ev6_machine_check(u64, u64, struct pt_regs *);
+
+/*
  * err_marvel.c
  */
 extern void marvel_machine_check(u64, u64, struct pt_regs *);