[PATCH] remove unnecessary config.h includes from drivers/net/
[pandora-kernel.git] / arch / powerpc / kernel / machine_kexec.c
1 /*
2  * Code to handle transition of Linux booting another kernel.
3  *
4  * Copyright (C) 2002-2003 Eric Biederman  <ebiederm@xmission.com>
5  * GameCube/ppc32 port Copyright (C) 2004 Albert Herranz
6  * Copyright (C) 2005 IBM Corporation.
7  *
8  * This source code is licensed under the GNU General Public License,
9  * Version 2.  See the file COPYING for more details.
10  */
11
12 #include <linux/kexec.h>
13 #include <linux/reboot.h>
14 #include <linux/threads.h>
15 #include <asm/machdep.h>
16
17 void machine_crash_shutdown(struct pt_regs *regs)
18 {
19         if (ppc_md.machine_crash_shutdown)
20                 ppc_md.machine_crash_shutdown(regs);
21 }
22
23 /*
24  * Do what every setup is needed on image and the
25  * reboot code buffer to allow us to avoid allocations
26  * later.
27  */
28 int machine_kexec_prepare(struct kimage *image)
29 {
30         if (ppc_md.machine_kexec_prepare)
31                 return ppc_md.machine_kexec_prepare(image);
32         /*
33          * Fail if platform doesn't provide its own machine_kexec_prepare
34          * implementation.
35          */
36         return -ENOSYS;
37 }
38
39 void machine_kexec_cleanup(struct kimage *image)
40 {
41         if (ppc_md.machine_kexec_cleanup)
42                 ppc_md.machine_kexec_cleanup(image);
43 }
44
45 /*
46  * Do not allocate memory (or fail in any way) in machine_kexec().
47  * We are past the point of no return, committed to rebooting now.
48  */
49 NORET_TYPE void machine_kexec(struct kimage *image)
50 {
51         if (ppc_md.machine_kexec)
52                 ppc_md.machine_kexec(image);
53         else {
54                 /*
55                  * Fall back to normal restart if platform doesn't provide
56                  * its own kexec function, and user insist to kexec...
57                  */
58                 machine_restart(NULL);
59         }
60         for(;;);
61 }