]> git.proxmox.com Git - qemu.git/commitdiff
int13 CDROM BIOS fix (aka Solaris x86 install CD fix)
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 16 May 2004 14:21:17 +0000 (14:21 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 16 May 2004 14:21:17 +0000 (14:21 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@807 c046a42c-6fe2-441c-8c8c-71466251a162

pc-bios/README
pc-bios/bios.bin
pc-bios/bios.diff [new file with mode: 0644]

index 508801dce62ba3144c4c89515530b26a5b603e45..b5f0bc9e267c2e0fda744f157f585d95cc169e1c 100644 (file)
@@ -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/).
index ae2240b2a41d9ab44f3d1b8a37c1d242b66ef718..21ef816074ba046d08207500a673115edc56b985 100644 (file)
Binary files a/pc-bios/bios.bin and b/pc-bios/bios.bin differ
diff --git a/pc-bios/bios.diff b/pc-bios/bios.diff
new file mode 100644 (file)
index 0000000..e53b8c7
--- /dev/null
@@ -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;