aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-05-16 14:21:17 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-05-16 14:21:17 +0000
commit3f433d2c87d666e446b1cd45c52390d61edd189b (patch)
tree74d5b2ecb26ef4cbe10fe226cf9c88ba705c2faa
parent1a084f3d51a66d43b65e91004f9964fe32f98323 (diff)
int13 CDROM BIOS fix (aka Solaris x86 install CD fix)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@807 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--pc-bios/README3
-rw-r--r--pc-bios/bios.binbin65536 -> 65536 bytes
-rw-r--r--pc-bios/bios.diff43
3 files changed, 45 insertions, 1 deletions
diff --git a/pc-bios/README b/pc-bios/README
index 508801dce6..b5f0bc9e26 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -1,4 +1,5 @@
- The PC BIOS comes from the Bochs project
- (http://bochs.sourceforge.net/).
+ (http://bochs.sourceforge.net/). A patch from bios.diff was applied.
+
- The VGA BIOS comes from the LGPL VGA bios project
(http://www.nongnu.org/vgabios/).
diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index ae2240b2a4..21ef816074 100644
--- a/pc-bios/bios.bin
+++ b/pc-bios/bios.bin
Binary files differ
diff --git a/pc-bios/bios.diff b/pc-bios/bios.diff
new file mode 100644
index 0000000000..e53b8c7330
--- /dev/null
+++ b/pc-bios/bios.diff
@@ -0,0 +1,43 @@
+Index: rombios.c
+===================================================================
+RCS file: /cvsroot/bochs/bochs/bios/rombios.c,v
+retrieving revision 1.108
+diff -u -w -r1.108 rombios.c
+--- rombios.c 9 Feb 2004 16:48:50 -0000 1.108
++++ rombios.c 16 May 2004 13:44:26 -0000
+@@ -2254,6 +2254,7 @@
+ type = read_byte(get_SS(),buffer+1) & 0x1f;
+ removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0;
+ mode = read_byte(get_SS(),buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
++ blksize = 2048;
+
+ write_byte(ebda_seg,&EbdaData->ata.devices[device].device, type);
+ write_byte(ebda_seg,&EbdaData->ata.devices[device].removable, removable);
+@@ -3781,7 +3782,17 @@
+ write_word(ebda_seg, 0x0022, mouse_driver_offset);
+ write_word(ebda_seg, 0x0024, mouse_driver_seg);
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
++ if (mouse_driver_offset == 0 &&
++ mouse_driver_seg == 0) {
++ /* remove handler */
++ if ( (mouse_flags_2 & 0x80) != 0 ) {
++ mouse_flags_2 &= ~0x80;
++ inhibit_mouse_int_and_events(); // disable IRQ12 and packets
++ }
++ } else {
++ /* install handler */
+ mouse_flags_2 |= 0x80;
++ }
+ write_byte(ebda_seg, 0x0027, mouse_flags_2);
+ CLEAR_CF();
+ regs.u.r8.ah = 0;
+@@ -4409,7 +4420,8 @@
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+
+ if ( (mouse_flags_2 & 0x80) != 0x80 ) {
+- BX_PANIC("int74_function:\n");
++ // BX_PANIC("int74_function:\n");
++ return;
+ }
+
+ package_count = mouse_flags_2 & 0x07;