aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware/rombios
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-07-06 16:49:59 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-07-06 16:49:59 +0100
commit5bcc7775a7b488d59cc885c5dee9694e89eb53eb (patch)
treeb1250be2c240c256b5b5644ab4cc7b98da670970 /tools/firmware/rombios
parent621441dcd1a5253e381741b3e77adc5074b3fcd6 (diff)
downloadxen-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.c22
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;