1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds /* 31da177e4SLinus Torvalds * linux/arch/alpha/kernel/err_impl.h 41da177e4SLinus Torvalds * 51da177e4SLinus Torvalds * Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation) 61da177e4SLinus Torvalds * 71da177e4SLinus Torvalds * Contains declarations and macros to support Alpha error handling 81da177e4SLinus Torvalds * implementations. 91da177e4SLinus Torvalds */ 101da177e4SLinus Torvalds 11ec221208SDavid Howells #include <asm/mce.h> 12ec221208SDavid Howells 131da177e4SLinus Torvalds union el_timestamp; 141da177e4SLinus Torvalds struct el_subpacket; 151da177e4SLinus Torvalds struct ev7_lf_subpackets; 161da177e4SLinus Torvalds 171da177e4SLinus Torvalds struct el_subpacket_annotation { 181da177e4SLinus Torvalds struct el_subpacket_annotation *next; 191da177e4SLinus Torvalds u16 class; 201da177e4SLinus Torvalds u16 type; 211da177e4SLinus Torvalds u16 revision; 221da177e4SLinus Torvalds char *description; 231da177e4SLinus Torvalds char **annotation; 241da177e4SLinus Torvalds }; 251da177e4SLinus Torvalds #define SUBPACKET_ANNOTATION(c, t, r, d, a) {NULL, (c), (t), (r), (d), (a)} 261da177e4SLinus Torvalds 271da177e4SLinus Torvalds struct el_subpacket_handler { 281da177e4SLinus Torvalds struct el_subpacket_handler *next; 291da177e4SLinus Torvalds u16 class; 301da177e4SLinus Torvalds struct el_subpacket *(*handler)(struct el_subpacket *); 311da177e4SLinus Torvalds }; 321da177e4SLinus Torvalds #define SUBPACKET_HANDLER_INIT(c, h) {NULL, (c), (h)} 331da177e4SLinus Torvalds 341da177e4SLinus Torvalds /* 351da177e4SLinus Torvalds * Manipulate a field from a register given it's name. defines 361da177e4SLinus Torvalds * for the LSB (__S - shift count) and bitmask (__M) are required 371da177e4SLinus Torvalds * 381da177e4SLinus Torvalds * EXTRACT(u, f) - extracts the field and places it at bit position 0 391da177e4SLinus Torvalds * GEN_MASK(f) - creates an in-position mask for the field 401da177e4SLinus Torvalds */ 411da177e4SLinus Torvalds #define EXTRACT(u, f) (((u) >> f##__S) & f##__M) 421da177e4SLinus Torvalds #define GEN_MASK(f) ((u64)f##__M << f##__S) 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds /* 451da177e4SLinus Torvalds * err_common.c 461da177e4SLinus Torvalds */ 471da177e4SLinus Torvalds extern char *err_print_prefix; 481da177e4SLinus Torvalds 491da177e4SLinus Torvalds extern void mchk_dump_mem(void *, size_t, char **); 501da177e4SLinus Torvalds extern void mchk_dump_logout_frame(struct el_common *); 511da177e4SLinus Torvalds extern void el_print_timestamp(union el_timestamp *); 521da177e4SLinus Torvalds extern void el_process_subpackets(struct el_subpacket *, int); 531da177e4SLinus Torvalds extern struct el_subpacket *el_process_subpacket(struct el_subpacket *); 541da177e4SLinus Torvalds extern void el_annotate_subpacket(struct el_subpacket *); 551da177e4SLinus Torvalds extern void cdl_check_console_data_log(void); 561da177e4SLinus Torvalds extern int cdl_register_subpacket_annotation(struct el_subpacket_annotation *); 571da177e4SLinus Torvalds extern int cdl_register_subpacket_handler(struct el_subpacket_handler *); 581da177e4SLinus Torvalds 591da177e4SLinus Torvalds /* 601da177e4SLinus Torvalds * err_ev7.c 611da177e4SLinus Torvalds */ 621da177e4SLinus Torvalds extern struct ev7_lf_subpackets * 631da177e4SLinus Torvalds ev7_collect_logout_frame_subpackets(struct el_subpacket *, 641da177e4SLinus Torvalds struct ev7_lf_subpackets *); 651da177e4SLinus Torvalds extern void ev7_register_error_handlers(void); 661ffb1c0cSIvan Kokshaysky extern void ev7_machine_check(unsigned long, unsigned long); 671da177e4SLinus Torvalds 681da177e4SLinus Torvalds /* 691da177e4SLinus Torvalds * err_ev6.c 701da177e4SLinus Torvalds */ 711da177e4SLinus Torvalds extern void ev6_register_error_handlers(void); 721da177e4SLinus Torvalds extern int ev6_process_logout_frame(struct el_common *, int); 731ffb1c0cSIvan Kokshaysky extern void ev6_machine_check(unsigned long, unsigned long); 741da177e4SLinus Torvalds 751da177e4SLinus Torvalds /* 761da177e4SLinus Torvalds * err_marvel.c 771da177e4SLinus Torvalds */ 781ffb1c0cSIvan Kokshaysky extern void marvel_machine_check(unsigned long, unsigned long); 791da177e4SLinus Torvalds extern void marvel_register_error_handlers(void); 801da177e4SLinus Torvalds 811da177e4SLinus Torvalds /* 821da177e4SLinus Torvalds * err_titan.c 831da177e4SLinus Torvalds */ 841da177e4SLinus Torvalds extern int titan_process_logout_frame(struct el_common *, int); 851ffb1c0cSIvan Kokshaysky extern void titan_machine_check(unsigned long, unsigned long); 861da177e4SLinus Torvalds extern void titan_register_error_handlers(void); 871da177e4SLinus Torvalds extern int privateer_process_logout_frame(struct el_common *, int); 881ffb1c0cSIvan Kokshaysky extern void privateer_machine_check(unsigned long, unsigned long); 89