0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/interrupt.h>
0009 #include <linux/linkage.h>
0010
0011 #include <asm/addrspace.h>
0012
0013 typedef void __noreturn (* noret_func_t)(void);
0014
0015 static inline void __noreturn back_to_prom(void)
0016 {
0017 noret_func_t func = (void *)CKSEG1ADDR(0x1fc00000);
0018
0019 func();
0020 }
0021
0022 void __noreturn dec_machine_restart(char *command)
0023 {
0024 back_to_prom();
0025 }
0026
0027 void __noreturn dec_machine_halt(void)
0028 {
0029 back_to_prom();
0030 }
0031
0032 void __noreturn dec_machine_power_off(void)
0033 {
0034
0035 back_to_prom();
0036 }
0037
0038 irqreturn_t dec_intr_halt(int irq, void *dev_id)
0039 {
0040 dec_machine_halt();
0041 }