err_impl.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. #include <asm/mce.h>
  11. union el_timestamp;
  12. struct el_subpacket;
  13. struct ev7_lf_subpackets;
  14. struct el_subpacket_annotation {
  15. struct el_subpacket_annotation *next;
  16. u16 class;
  17. u16 type;
  18. u16 revision;
  19. char *description;
  20. char **annotation;
  21. };
  22. #define SUBPACKET_ANNOTATION(c, t, r, d, a) {NULL, (c), (t), (r), (d), (a)}
  23. struct el_subpacket_handler {
  24. struct el_subpacket_handler *next;
  25. u16 class;
  26. struct el_subpacket *(*handler)(struct el_subpacket *);
  27. };
  28. #define SUBPACKET_HANDLER_INIT(c, h) {NULL, (c), (h)}
  29. /*
  30. * Manipulate a field from a register given it's name. defines
  31. * for the LSB (__S - shift count) and bitmask (__M) are required
  32. *
  33. * EXTRACT(u, f) - extracts the field and places it at bit position 0
  34. * GEN_MASK(f) - creates an in-position mask for the field
  35. */
  36. #define EXTRACT(u, f) (((u) >> f##__S) & f##__M)
  37. #define GEN_MASK(f) ((u64)f##__M << f##__S)
  38. /*
  39. * err_common.c
  40. */
  41. extern char *err_print_prefix;
  42. extern void mchk_dump_mem(void *, size_t, char **);
  43. extern void mchk_dump_logout_frame(struct el_common *);
  44. extern void el_print_timestamp(union el_timestamp *);
  45. extern void el_process_subpackets(struct el_subpacket *, int);
  46. extern struct el_subpacket *el_process_subpacket(struct el_subpacket *);
  47. extern void el_annotate_subpacket(struct el_subpacket *);
  48. extern void cdl_check_console_data_log(void);
  49. extern int cdl_register_subpacket_annotation(struct el_subpacket_annotation *);
  50. extern int cdl_register_subpacket_handler(struct el_subpacket_handler *);
  51. /*
  52. * err_ev7.c
  53. */
  54. extern struct ev7_lf_subpackets *
  55. ev7_collect_logout_frame_subpackets(struct el_subpacket *,
  56. struct ev7_lf_subpackets *);
  57. extern void ev7_register_error_handlers(void);
  58. extern void ev7_machine_check(unsigned long, unsigned long);
  59. /*
  60. * err_ev6.c
  61. */
  62. extern void ev6_register_error_handlers(void);
  63. extern int ev6_process_logout_frame(struct el_common *, int);
  64. extern void ev6_machine_check(unsigned long, unsigned long);
  65. /*
  66. * err_marvel.c
  67. */
  68. extern void marvel_machine_check(unsigned long, unsigned long);
  69. extern void marvel_register_error_handlers(void);
  70. /*
  71. * err_titan.c
  72. */
  73. extern int titan_process_logout_frame(struct el_common *, int);
  74. extern void titan_machine_check(unsigned long, unsigned long);
  75. extern void titan_register_error_handlers(void);
  76. extern int privateer_process_logout_frame(struct el_common *, int);
  77. extern void privateer_machine_check(unsigned long, unsigned long);