cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

err_impl.h (2656B)


      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);