Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
sh
kernel
reboot.c
Go to the documentation of this file.
1
#include <
linux/pm.h
>
2
#include <linux/kexec.h>
3
#include <linux/kernel.h>
4
#include <linux/reboot.h>
5
#include <linux/module.h>
6
#ifdef CONFIG_SUPERH32
7
#include <asm/watchdog.h>
8
#endif
9
#include <asm/addrspace.h>
10
#include <asm/reboot.h>
11
#include <asm/tlbflush.h>
12
#include <asm/traps.h>
13
14
void
(*
pm_power_off
)(
void
);
15
EXPORT_SYMBOL
(
pm_power_off
);
16
17
#ifdef CONFIG_SUPERH32
18
static
void
watchdog_trigger_immediate(
void
)
19
{
20
sh_wdt_write_cnt(0xFF);
21
sh_wdt_write_csr(0xC2);
22
}
23
#endif
24
25
static
void
native_machine_restart
(
char
*
__unused
)
26
{
27
local_irq_disable
();
28
29
/* Destroy all of the TLBs in preparation for reset by MMU */
30
__flush_tlb_global
();
31
32
/* Address error with SR.BL=1 first. */
33
trigger_address_error();
34
35
#ifdef CONFIG_SUPERH32
36
/* If that fails or is unsupported, go for the watchdog next. */
37
watchdog_trigger_immediate();
38
#endif
39
40
/*
41
* Give up and sleep.
42
*/
43
while
(1)
44
cpu_sleep
();
45
}
46
47
static
void
native_machine_shutdown(
void
)
48
{
49
smp_send_stop
();
50
}
51
52
static
void
native_machine_power_off
(
void
)
53
{
54
if
(
pm_power_off
)
55
pm_power_off
();
56
}
57
58
static
void
native_machine_halt
(
void
)
59
{
60
/* stop other cpus */
61
machine_shutdown
();
62
63
/* stop this cpu */
64
stop_this_cpu
(
NULL
);
65
}
66
67
struct
machine_ops
machine_ops
= {
68
.
power_off
=
native_machine_power_off
,
69
.shutdown = native_machine_shutdown,
70
.restart =
native_machine_restart
,
71
.halt =
native_machine_halt
,
72
#ifdef CONFIG_KEXEC
73
.crash_shutdown =
native_machine_crash_shutdown
,
74
#endif
75
};
76
77
void
machine_power_off
(
void
)
78
{
79
machine_ops.
power_off
();
80
}
81
82
void
machine_shutdown
(
void
)
83
{
84
machine_ops.
shutdown
();
85
}
86
87
void
machine_restart
(
char
*
cmd
)
88
{
89
machine_ops.
restart
(cmd);
90
}
91
92
void
machine_halt
(
void
)
93
{
94
machine_ops.
halt
();
95
}
96
97
#ifdef CONFIG_KEXEC
98
void
machine_crash_shutdown
(
struct
pt_regs
*
regs
)
99
{
100
machine_ops.
crash_shutdown
(regs);
101
}
102
#endif
Generated on Thu Jan 10 2013 13:04:24 for Linux Kernel by
1.8.2