Blame view

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