-no-fd-bootchk option (Lonnie Mendez)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1976 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/hw/pc.c b/hw/pc.c
index b722190..361f4bb 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -193,6 +193,8 @@
case 'a':
case 'b':
rtc_set_memory(s, 0x3d, 0x01); /* floppy boot */
+ if (!fd_bootchk)
+ rtc_set_memory(s, 0x38, 0x01); /* disable signature check */
break;
default:
case 'c':
@@ -264,10 +266,6 @@
}
}
rtc_set_memory(s, 0x39, val);
-
- /* Disable check of 0x55AA signature on the last two bytes of
- first sector of disk. XXX: make it the default ? */
- // rtc_set_memory(s, 0x38, 1);
}
void ioport_set_a20(int enable)
diff --git a/qemu-doc.texi b/qemu-doc.texi
index 23bf680..5a3f8f4 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -228,6 +228,10 @@
the raw disk image you use is not written back. You can however force
the write back by pressing @key{C-a s} (@pxref{disk_images}).
+@item -no-fd-bootchk
+Disable boot signature checking for floppy disks in Bochs BIOS. It may
+be needed to boot from old floppy disks.
+
@item -m megs
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
diff --git a/vl.c b/vl.c
index 5cbd164..3d80ec8 100644
--- a/vl.c
+++ b/vl.c
@@ -159,6 +159,7 @@
#define MAX_CPUS 1
#endif
int acpi_enabled = 1;
+int fd_bootchk = 1;
/***********************************************************/
/* x86 ISA bus support */
@@ -4634,6 +4635,9 @@
"-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)\n"
"-boot [a|c|d] boot on floppy (a), hard disk (c) or CD-ROM (d)\n"
"-snapshot write to temporary files instead of disk image files\n"
+#ifdef TARGET_I386
+ "-no-fd-bootchk disable boot signature checking for floppy disks\n"
+#endif
"-m megs set virtual RAM size to megs MB [default=%d]\n"
"-smp n set the number of CPUs to 'n' [default=1]\n"
"-nographic disable graphical output and redirect serial I/Os to console\n"
@@ -4765,6 +4769,9 @@
QEMU_OPTION_cdrom,
QEMU_OPTION_boot,
QEMU_OPTION_snapshot,
+#ifdef TARGET_I386
+ QEMU_OPTION_no_fd_bootchk,
+#endif
QEMU_OPTION_m,
QEMU_OPTION_nographic,
#ifdef HAS_AUDIO
@@ -4828,6 +4835,9 @@
{ "cdrom", HAS_ARG, QEMU_OPTION_cdrom },
{ "boot", HAS_ARG, QEMU_OPTION_boot },
{ "snapshot", 0, QEMU_OPTION_snapshot },
+#ifdef TARGET_I386
+ { "no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk },
+#endif
{ "m", HAS_ARG, QEMU_OPTION_m },
{ "nographic", 0, QEMU_OPTION_nographic },
{ "k", HAS_ARG, QEMU_OPTION_k },
@@ -5286,6 +5296,11 @@
case QEMU_OPTION_fdb:
fd_filename[1] = optarg;
break;
+#ifdef TARGET_I386
+ case QEMU_OPTION_no_fd_bootchk:
+ fd_bootchk = 0;
+ break;
+#endif
case QEMU_OPTION_no_code_copy:
code_copy_enabled = 0;
break;
diff --git a/vl.h b/vl.h
index ba99d46..d2010f1 100644
--- a/vl.h
+++ b/vl.h
@@ -889,6 +889,7 @@
/* pc.c */
extern QEMUMachine pc_machine;
extern QEMUMachine isapc_machine;
+extern int fd_bootchk;
void ioport_set_a20(int enable);
int ioport_get_a20(void);