diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-05-16 14:21:17 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-05-16 14:21:17 +0000 |
commit | 3f433d2c87d666e446b1cd45c52390d61edd189b (patch) | |
tree | 74d5b2ecb26ef4cbe10fe226cf9c88ba705c2faa | |
parent | 1a084f3d51a66d43b65e91004f9964fe32f98323 (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/README | 3 | ||||
-rw-r--r-- | pc-bios/bios.bin | bin | 65536 -> 65536 bytes | |||
-rw-r--r-- | pc-bios/bios.diff | 43 |
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 Binary files differindex ae2240b2a4..21ef816074 100644 --- a/pc-bios/bios.bin +++ b/pc-bios/bios.bin 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; |