diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-07-06 16:49:59 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-07-06 16:49:59 +0100 |
commit | 5bcc7775a7b488d59cc885c5dee9694e89eb53eb (patch) | |
tree | b1250be2c240c256b5b5644ab4cc7b98da670970 /tools/firmware/rombios | |
parent | 621441dcd1a5253e381741b3e77adc5074b3fcd6 (diff) | |
download | xen-5bcc7775a7b488d59cc885c5dee9694e89eb53eb.tar.gz xen-5bcc7775a7b488d59cc885c5dee9694e89eb53eb.tar.bz2 xen-5bcc7775a7b488d59cc885c5dee9694e89eb53eb.zip |
rombios: pause for a keypress after a failed boot
rombios: inform the user and pause for a keypress after a failed boot
rather than powering off immediately.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
Diffstat (limited to 'tools/firmware/rombios')
-rw-r--r-- | tools/firmware/rombios/rombios.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tools/firmware/rombios/rombios.c b/tools/firmware/rombios/rombios.c index 26a952f649..1c05d99e75 100644 --- a/tools/firmware/rombios/rombios.c +++ b/tools/firmware/rombios/rombios.c @@ -8243,7 +8243,27 @@ Bit16u seq_nr; write_word(ebda_seg, IPL_BOOTFIRST_OFFSET, 0xFFFF); /* Reset boot sequence */ write_word(ebda_seg, IPL_SEQUENCE_OFFSET, 0xFFFF); - } else if (bootdev == 0) BX_PANIC("No bootable device.\n"); + } else if (bootdev == 0) { + printf("\nNo bootable device.\n"); + printf("Reboot or press any key to retry."); + write_word(ebda_seg, IPL_SEQUENCE_OFFSET, 0xFFFF); +ASM_START + sti +ASM_END + { + Bit8u sc, ac; + while(!dequeue_key(&sc, &ac, 1)) { +ASM_START + hlt +ASM_END + } + } +ASM_START + cli +ASM_END + printf("\n\n"); + return; + } /* Translate from CMOS runes to an IPL table offset by subtracting 1 */ bootdev -= 1; |