1/* reboot.c: reboot/shutdown/halt/poweroff handling 2 * 3 * Copyright (C) 2008 David S. Miller <davem@davemloft.net> 4 */ 5#include <linux/kernel.h> 6#include <linux/reboot.h> 7#include <linux/export.h> 8#include <linux/pm.h> 9 10#include <asm/oplib.h> 11#include <asm/prom.h> 12#include <asm/setup.h> 13 14/* sysctl - toggle power-off restriction for serial console 15 * systems in machine_power_off() 16 */ 17int scons_pwroff = 1; 18 19/* This isn't actually used, it exists merely to satisfy the 20 * reference in kernel/sys.c 21 */ 22void (*pm_power_off)(void) = machine_power_off; 23EXPORT_SYMBOL(pm_power_off); 24 25void machine_power_off(void) 26{ 27 if (strcmp(of_console_device->type, "serial") || scons_pwroff) 28 prom_halt_power_off(); 29 30 prom_halt(); 31} 32 33void machine_halt(void) 34{ 35 prom_halt(); 36 panic("Halt failed!"); 37} 38 39void machine_restart(char *cmd) 40{ 41 char *p; 42 43 p = strchr(reboot_command, '\n'); 44 if (p) 45 *p = 0; 46 if (cmd) 47 prom_reboot(cmd); 48 if (*reboot_command) 49 prom_reboot(reboot_command); 50 prom_reboot(""); 51 panic("Reboot failed!"); 52} 53 54