linux/arch/alpha/kernel/err_impl.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   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
  13union el_timestamp;
  14struct el_subpacket;
  15struct ev7_lf_subpackets;
  16
  17struct 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
  27struct 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 */
  47extern char *err_print_prefix;
  48
  49extern void mchk_dump_mem(void *, size_t, char **);
  50extern void mchk_dump_logout_frame(struct el_common *);
  51extern void el_print_timestamp(union el_timestamp *);
  52extern void el_process_subpackets(struct el_subpacket *, int);
  53extern struct el_subpacket *el_process_subpacket(struct el_subpacket *);
  54extern void el_annotate_subpacket(struct el_subpacket *);
  55extern void cdl_check_console_data_log(void);
  56extern int cdl_register_subpacket_annotation(struct el_subpacket_annotation *);
  57extern int cdl_register_subpacket_handler(struct el_subpacket_handler *);
  58
  59/*
  60 * err_ev7.c
  61 */
  62extern struct ev7_lf_subpackets *
  63ev7_collect_logout_frame_subpackets(struct el_subpacket *,
  64                                    struct ev7_lf_subpackets *);
  65extern void ev7_register_error_handlers(void);
  66extern void ev7_machine_check(unsigned long, unsigned long);
  67
  68/*
  69 * err_ev6.c
  70 */
  71extern void ev6_register_error_handlers(void);
  72extern int ev6_process_logout_frame(struct el_common *, int);
  73extern void ev6_machine_check(unsigned long, unsigned long);
  74
  75/*
  76 * err_marvel.c
  77 */
  78extern void marvel_machine_check(unsigned long, unsigned long);
  79extern void marvel_register_error_handlers(void);
  80
  81/*
  82 * err_titan.c
  83 */
  84extern int titan_process_logout_frame(struct el_common *, int);
  85extern void titan_machine_check(unsigned long, unsigned long);
  86extern void titan_register_error_handlers(void);
  87extern int privateer_process_logout_frame(struct el_common *, int);
  88extern void privateer_machine_check(unsigned long, unsigned long);
  89