diff options
| author | Michael Brown | 2013-03-22 14:54:44 +0100 |
|---|---|---|
| committer | Michael Brown | 2013-03-22 14:54:44 +0100 |
| commit | e68a6ca225115a8796e6d63ffc32856043e25886 (patch) | |
| tree | 3bb58a45adbf41533d910482618b2ea306e4cb2c /src/arch/i386/interface/pcbios | |
| parent | [efi] Add "reboot" command for EFI (diff) | |
| download | ipxe-e68a6ca225115a8796e6d63ffc32856043e25886.tar.gz ipxe-e68a6ca225115a8796e6d63ffc32856043e25886.tar.xz ipxe-e68a6ca225115a8796e6d63ffc32856043e25886.zip | |
[cmdline] Add ability to perform a warm reboot
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/i386/interface/pcbios')
| -rw-r--r-- | src/arch/i386/interface/pcbios/bios_reboot.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/arch/i386/interface/pcbios/bios_reboot.c b/src/arch/i386/interface/pcbios/bios_reboot.c index 86f4e3eb3..68546b2e5 100644 --- a/src/arch/i386/interface/pcbios/bios_reboot.c +++ b/src/arch/i386/interface/pcbios/bios_reboot.c @@ -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" ) : : ); |
