1 /* 2 * Reset a DECstation machine. 3 * 4 * Copyright (C) 199x the Anonymous 5 * Copyright (C) 2001, 2002, 2003 Maciej W. Rozycki 6 */ 7 #include <linux/interrupt.h> 8 #include <linux/linkage.h> 9 10 #include <asm/addrspace.h> 11 12 typedef void __noreturn (* noret_func_t)(void); 13 14 static inline void __noreturn back_to_prom(void) 15 { 16 noret_func_t func = (void *)CKSEG1ADDR(0x1fc00000); 17 18 func(); 19 } 20 21 void __noreturn dec_machine_restart(char *command) 22 { 23 back_to_prom(); 24 } 25 26 void __noreturn dec_machine_halt(void) 27 { 28 back_to_prom(); 29 } 30 31 void __noreturn dec_machine_power_off(void) 32 { 33 /* DECstations don't have a software power switch */ 34 back_to_prom(); 35 } 36 37 irqreturn_t dec_intr_halt(int irq, void *dev_id) 38 { 39 dec_machine_halt(); 40 } 41