- behaviour of some PCI registers fixed

This commit is contained in:
Volker Ruppert 2003-01-24 15:14:15 +00:00
parent 558b0c3aa0
commit 2a5b04afb5

View File

@ -336,13 +336,13 @@ diff -urN ../bochs/iodev/iodev.h ./iodev/iodev.h
#if BX_SUPPORT_APIC
diff -urN ../bochs/iodev/pciusb.cc ./iodev/pciusb.cc
--- ../bochs/iodev/pciusb.cc 1970-01-01 01:00:00.000000000 +0100
+++ ./iodev/pciusb.cc 2003-01-23 18:04:33.000000000 +0100
@@ -0,0 +1,694 @@
+++ ./iodev/pciusb.cc 2003-01-24 14:08:48.000000000 +0100
@@ -0,0 +1,701 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: patch.usb-fys,v 1.2 2003-01-23 20:13:23 vruppert Exp $
+// $Id: patch.usb-fys,v 1.3 2003-01-24 15:14:15 vruppert Exp $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) 2002 MandrakeSoft S.A.
+// Copyright (C) 2003 MandrakeSoft S.A.
+//
+// MandrakeSoft S.A.
+// 43, rue d'Aboukir
@ -465,7 +465,7 @@ diff -urN ../bochs/iodev/pciusb.cc ./iodev/pciusb.cc
+ { 0x0e, 0x00 }, // header_type_generic
+ { 0x20, 0x41 }, { 0x21, 0xFF }, { 0x22, 0x00 }, { 0x23, 0x00 }, // address space
+ { 0x3c, 0x09 }, // IRQ
+ { 0x3d, 0x0a } // INT
+ { 0x3d, 0x04 } // INT
+
+ };
+ for (unsigned i = 0; i < sizeof(reset_vals) / sizeof(*reset_vals); ++i) {
@ -1012,10 +1012,17 @@ diff -urN ../bochs/iodev/pciusb.cc ./iodev/pciusb.cc
+ for (unsigned i=0; i<io_len; i++) {
+ const Bit8u value8 = (value >> (i*8)) & 0xFF;
+ switch (address+i) {
+ case 0x30: // Oh, no, you're not writing to rom_base!
+ case 0x20: //
+ BX_USB_THIS s.pci_conf[address+i] = (value8 & 0xe0) | 0x01;
+ sprintf(szTmp2, "%02x", (value8 & 0xe0) | 0x01);
+ break;
+ case 0x22: // Oh, no, you're not writing to rom_base!
+ case 0x23: //
+ case 0x30: //
+ case 0x31: //
+ case 0x32: //
+ case 0x33: //
+ case 0x3d: //
+ case 0x04: // disallowing write to command
+ case 0x06: // disallowing write to status lo-byte (is that expected?)
+ strcpy(szTmp2, "..");
@ -1028,7 +1035,7 @@ diff -urN ../bochs/iodev/pciusb.cc ./iodev/pciusb.cc
+ strcat(szTmp, szTmp2);
+ }
+ strrev(szTmp);
+ BX_DEBUG(("Experimental USB write register 0x%02x value 0x%s", address, szTmp));
+ BX_DEBUG(("Experimental USB PCI write register 0x%02x value 0x%s", address, szTmp));
+}
+
+#endif // BX_PCI_SUPPORT && BX_PCI_USB_SUPPORT
@ -1037,7 +1044,7 @@ diff -urN ../bochs/iodev/pciusb.h ./iodev/pciusb.h
+++ ./iodev/pciusb.h 2003-01-23 17:40:20.000000000 +0100
@@ -0,0 +1,196 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: patch.usb-fys,v 1.2 2003-01-23 20:13:23 vruppert Exp $
+// $Id: patch.usb-fys,v 1.3 2003-01-24 15:14:15 vruppert Exp $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) 2003 MandrakeSoft S.A.