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