[cmdline] Add ability to perform a warm reboot

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2013-03-22 13:54:44 +00:00
parent 71cd508838
commit e68a6ca225
6 changed files with 28 additions and 9 deletions

View File

@@ -6,6 +6,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define BDA_SEG 0x0040
#define BDA_EQUIPMENT_WORD 0x0010
#define BDA_FBMS 0x0013
#define BDA_REBOOT 0x0072
#define BDA_REBOOT_WARM 0x1234
#define BDA_NUM_DRIVES 0x0075
#endif /* BIOS_H */

View File

@@ -27,12 +27,19 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <ipxe/reboot.h>
#include <realmode.h>
#include <bios.h>
/**
* Reboot system
*
* @v warm Perform a warm reboot
*/
static void bios_reboot ( void ) {
static void bios_reboot ( int warm ) {
uint16_t flag;
/* Configure BIOS for cold/warm reboot */
flag = ( warm ? BDA_REBOOT_WARM : 0 );
put_real ( flag, BDA_SEG, BDA_REBOOT );
/* Jump to system reset vector */
__asm__ __volatile__ ( REAL_CODE ( "ljmp $0xf000, $0xfff0" ) : : );