mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 03:13:59 +00:00 
			
		
		
		
	 e4c94330e3
			
		
	
	
		e4c94330e3
		
	
	
	
	
		
			
			In the lead up to 2.6.13 I fixed a large number of reboot problems by making the calling conventions consistent. Despite checking and double checking my work it appears I missed an obvious one. This first patch simply refactors the reboot routines so all of the preparation for various kinds of reboots are in their own functions. Making it very hard to get the various kinds of reboot out of sync. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _LINUX_REBOOT_H
 | |
| #define _LINUX_REBOOT_H
 | |
| 
 | |
| /*
 | |
|  * Magic values required to use _reboot() system call.
 | |
|  */
 | |
| 
 | |
| #define	LINUX_REBOOT_MAGIC1	0xfee1dead
 | |
| #define	LINUX_REBOOT_MAGIC2	672274793
 | |
| #define	LINUX_REBOOT_MAGIC2A	85072278
 | |
| #define	LINUX_REBOOT_MAGIC2B	369367448
 | |
| #define	LINUX_REBOOT_MAGIC2C	537993216
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * Commands accepted by the _reboot() system call.
 | |
|  *
 | |
|  * RESTART     Restart system using default command and mode.
 | |
|  * HALT        Stop OS and give system control to ROM monitor, if any.
 | |
|  * CAD_ON      Ctrl-Alt-Del sequence causes RESTART command.
 | |
|  * CAD_OFF     Ctrl-Alt-Del sequence sends SIGINT to init task.
 | |
|  * POWER_OFF   Stop OS and remove all power from system, if possible.
 | |
|  * RESTART2    Restart system using given command string.
 | |
|  * SW_SUSPEND  Suspend system using software suspend if compiled in.
 | |
|  * KEXEC       Restart system using a previously loaded Linux kernel
 | |
|  */
 | |
| 
 | |
| #define	LINUX_REBOOT_CMD_RESTART	0x01234567
 | |
| #define	LINUX_REBOOT_CMD_HALT		0xCDEF0123
 | |
| #define	LINUX_REBOOT_CMD_CAD_ON		0x89ABCDEF
 | |
| #define	LINUX_REBOOT_CMD_CAD_OFF	0x00000000
 | |
| #define	LINUX_REBOOT_CMD_POWER_OFF	0x4321FEDC
 | |
| #define	LINUX_REBOOT_CMD_RESTART2	0xA1B2C3D4
 | |
| #define	LINUX_REBOOT_CMD_SW_SUSPEND	0xD000FCE2
 | |
| #define	LINUX_REBOOT_CMD_KEXEC		0x45584543
 | |
| 
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| #include <linux/notifier.h>
 | |
| 
 | |
| extern int register_reboot_notifier(struct notifier_block *);
 | |
| extern int unregister_reboot_notifier(struct notifier_block *);
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * Architecture-specific implementations of sys_reboot commands.
 | |
|  */
 | |
| 
 | |
| extern void machine_restart(char *cmd);
 | |
| extern void machine_halt(void);
 | |
| extern void machine_power_off(void);
 | |
| 
 | |
| extern void machine_shutdown(void);
 | |
| struct pt_regs;
 | |
| extern void machine_crash_shutdown(struct pt_regs *);
 | |
| 
 | |
| /* 
 | |
|  * Architecture independent implemenations of sys_reboot commands.
 | |
|  */
 | |
| 
 | |
| extern void kernel_restart_prepare(char *cmd);
 | |
| extern void kernel_halt_prepare(void);
 | |
| extern void kernel_power_off_prepare(void);
 | |
| 
 | |
| extern void kernel_restart(char *cmd);
 | |
| extern void kernel_halt(void);
 | |
| extern void kernel_power_off(void);
 | |
| extern void kernel_kexec(void);
 | |
| 
 | |
| /*
 | |
|  * Emergency restart, callable from an interrupt handler.
 | |
|  */
 | |
| 
 | |
| extern void emergency_restart(void);
 | |
| #include <asm/emergency-restart.h>
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif /* _LINUX_REBOOT_H */
 |