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 back_to_prom(void)14static inline void __noreturn back_to_prom(void) 15 { 16 noret_func_t func = (void *)CKSEG1ADDR(0x1fc00000); 17 18 func(); 19 } 20 dec_machine_restart(char * command)21void __noreturn dec_machine_restart(char *command) 22 { 23 back_to_prom(); 24 } 25 dec_machine_halt(void)26void __noreturn dec_machine_halt(void) 27 { 28 back_to_prom(); 29 } 30 dec_machine_power_off(void)31void __noreturn dec_machine_power_off(void) 32 { 33 /* DECstations don't have a software power switch */ 34 back_to_prom(); 35 } 36 dec_intr_halt(int irq,void * dev_id)37irqreturn_t dec_intr_halt(int irq, void *dev_id) 38 { 39 dec_machine_halt(); 40 } 41