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)23marvel_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)54marvel_register_error_handlers(void) 55 { 56 ev7_register_error_handlers(); 57 } 58