| 1 |
|
| 2 | |
| 3 | * linux/arch/alpha/kernel/err_impl.h
|
| 4 | *
|
| 5 | * Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation)
|
| 6 | *
|
| 7 | * Contains declarations and macros to support Alpha error handling
|
| 8 | * implementations.
|
| 9 |
|
| 10 |
|
| 11 | #include <asm/mce.h>
|
| 12 |
|
| 13 | union el_timestamp;
|
| 14 | struct el_subpacket;
|
| 15 | struct ev7_lf_subpackets;
|
| 16 |
|
| 17 | struct el_subpacket_annotation {
|
| 18 | struct el_subpacket_annotation *next;
|
| 19 | u16 class;
|
| 20 | u16 type;
|
| 21 | u16 revision;
|
| 22 | char *description;
|
| 23 | char **annotation;
|
| 24 | };
|
| 25 | #define SUBPACKET_ANNOTATION(c, t, r, d, a) {NULL, (c), (t), (r), (d), (a)}
|
| 26 |
|
| 27 | struct el_subpacket_handler {
|
| 28 | struct el_subpacket_handler *next;
|
| 29 | u16 class;
|
| 30 | struct el_subpacket *(*handler)(struct el_subpacket *);
|
| 31 | };
|
| 32 | #define SUBPACKET_HANDLER_INIT(c, h) {NULL, (c), (h)}
|
| 33 |
|
| 34 | |
| 35 | * Manipulate a field from a register given it's name. defines
|
| 36 | * for the LSB (__S - shift count) and bitmask (__M) are required
|
| 37 | *
|
| 38 | * EXTRACT(u, f) - extracts the field and places it at bit position 0
|
| 39 | * GEN_MASK(f) - creates an in-position mask for the field
|
| 40 |
|
| 41 | #define EXTRACT(u, f) (((u) >> f##__S) & f##__M)
|
| 42 | #define GEN_MASK(f) ((u64)f##__M << f##__S)
|
| 43 |
|
| 44 | |
| 45 | * err_common.c
|
| 46 |
|
| 47 | extern char *err_print_prefix;
|
| 48 |
|
| 49 | extern void mchk_dump_mem(void *, size_t, char **);
|
| 50 | extern void mchk_dump_logout_frame_raw(struct el_common *header);
|
| 51 | extern void mchk_dump_logout_frame(struct el_common *);
|
| 52 | extern void el_print_timestamp(union el_timestamp *);
|
| 53 | extern void el_process_subpackets(struct el_subpacket *, int);
|
| 54 | extern struct el_subpacket *el_process_subpacket(struct el_subpacket *);
|
| 55 | extern void el_annotate_subpacket(struct el_subpacket *);
|
| 56 | extern void cdl_check_console_data_log(void);
|
| 57 | extern int cdl_register_subpacket_annotation(struct el_subpacket_annotation *);
|
| 58 | extern int cdl_register_subpacket_handler(struct el_subpacket_handler *);
|
| 59 |
|
| 60 | |
| 61 | * err_ev7.c
|
| 62 |
|
| 63 | extern struct ev7_lf_subpackets *
|
| 64 | ev7_collect_logout_frame_subpackets(struct el_subpacket *,
|
| 65 | struct ev7_lf_subpackets *);
|
| 66 | extern void ev7_register_error_handlers(void);
|
| 67 | extern void ev7_machine_check(unsigned long, unsigned long);
|
| 68 |
|
| 69 | |
| 70 | * err_ev6.c
|
| 71 |
|
| 72 | extern void ev6_register_error_handlers(void);
|
| 73 | extern int ev6_process_logout_frame(struct el_common *, int);
|
| 74 | extern void ev6_machine_check(unsigned long, unsigned long);
|
| 75 |
|
| 76 | |
| 77 | * err_marvel.c
|
| 78 |
|
| 79 | extern void marvel_machine_check(unsigned long, unsigned long);
|
| 80 | extern void marvel_register_error_handlers(void);
|
| 81 |
|
| 82 | |
| 83 | * err_titan.c
|
| 84 |
|
| 85 | extern int titan_process_logout_frame(struct el_common *, int);
|
| 86 | extern void titan_machine_check(unsigned long, unsigned long);
|
| 87 | extern void titan_register_error_handlers(void);
|
| 88 | extern int privateer_process_logout_frame(struct el_common *, int);
|
| 89 | extern void privateer_machine_check(unsigned long, unsigned long);
|