1 /*
2  *	linux/arch/alpha/kernel/err_marvel.c
3  *
4  *	Copyright (C) 2001 Jeff Wiedemeier (Compaq Computer Corporation)
5  *
6  */
7 
8 #include <linux/init.h>
9 #include <linux/pci.h>
10 #include <linux/sched.h>
11 
12 #include <asm/io.h>
13 #include <asm/console.h>
14 #include <asm/core_marvel.h>
15 #include <asm/hwrpb.h>
16 #include <asm/smp.h>
17 
18 #include "err_impl.h"
19 #include "proto.h"
20 
21 
22 void
marvel_machine_check(u64 vector,u64 la_ptr,struct pt_regs * regs)23 marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
24 {
25 	struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
26 
27 	/*
28 	 * Sync the processor
29 	 */
30 	mb();
31 	draina();
32 
33 	el_process_subpacket(el_ptr);
34 
35 	switch(vector) {
36 	case SCB_Q_SYSEVENT:
37 		printk(KERN_CRIT "MARVEL SYSEVENT %ld\n", vector);
38 		break;
39 	case SCB_Q_SYSMCHK:
40 	case SCB_Q_SYSERR:
41 		printk(KERN_CRIT "MARVEL SYSMCHK/ERR %ld\n", vector);
42 		break;
43 	default:
44 		/* Don't know it - pass it up.  */
45 		return ev7_machine_check(vector, la_ptr, regs);
46 	}
47 
48         /* Release the logout frame.  */
49 	wrmces(0x7);
50 	mb();
51 }
52 
53 void
marvel_register_error_handlers(void)54 marvel_register_error_handlers(void)
55 {
56 	ev7_register_error_handlers();
57 }
58