PCI BIOS fixes
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@843 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index 7d87cb0..6c27175 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
index 1ed7048..dee62e0 100644
--- a/pc-bios/bios.diff
+++ b/pc-bios/bios.diff
@@ -4,7 +4,7 @@
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 15:16:57 -0000
++++ rombios.c 22 May 2004 15:47:51 -0000
@@ -2254,6 +2254,7 @@
type = read_byte(get_SS(),buffer+1) & 0x1f;
removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0;
@@ -58,3 +58,175 @@
}
package_count = mouse_flags_2 & 0x07;
+@@ -8401,57 +8416,69 @@
+ cmp al, #0x08
+ jne pci_pro_f09
+ call pci_pro_select_reg
++ push edx
+ mov dx, di
+ and dx, #0x03
+ add dx, #0x0cfc
+ in al, dx
++ pop edx
+ mov cl, al
+ jmp pci_pro_ok
+ pci_pro_f09: ;; read configuration word
+ cmp al, #0x09
+ jne pci_pro_f0a
+ call pci_pro_select_reg
++ push edx
+ mov dx, di
+ and dx, #0x02
+ add dx, #0x0cfc
+ in ax, dx
++ pop edx
+ mov cx, ax
+ jmp pci_pro_ok
+ pci_pro_f0a: ;; read configuration dword
+ cmp al, #0x0a
+ jne pci_pro_f0b
+ call pci_pro_select_reg
++ push edx
+ mov dx, #0x0cfc
+ in eax, dx
++ pop edx
+ mov ecx, eax
+ jmp pci_pro_ok
+ pci_pro_f0b: ;; write configuration byte
+ cmp al, #0x0b
+ jne pci_pro_f0c
+ call pci_pro_select_reg
++ push edx
+ mov dx, di
+ and dx, #0x03
+ add dx, #0x0cfc
+ mov al, cl
+ out dx, al
++ pop edx
+ jmp pci_pro_ok
+ pci_pro_f0c: ;; write configuration word
+ cmp al, #0x0c
+ jne pci_pro_f0d
+ call pci_pro_select_reg
++ push edx
+ mov dx, di
+ and dx, #0x02
+ add dx, #0x0cfc
+ mov ax, cx
+ out dx, ax
++ pop edx
+ jmp pci_pro_ok
+ pci_pro_f0d: ;; write configuration dword
+ cmp al, #0x0d
+ jne pci_pro_unknown
+ call pci_pro_select_reg
++ push edx
+ mov dx, #0x0cfc
+ mov eax, ecx
+ out dx, eax
++ pop edx
+ jmp pci_pro_ok
+ pci_pro_unknown:
+ mov ah, #0x81
+@@ -8468,6 +8495,7 @@
+ retf
+
+ pci_pro_select_reg:
++ push edx
+ mov eax, #0x800000
+ mov ax, bx
+ shl eax, #8
+@@ -8476,6 +8504,7 @@
+ and al, #0xfc
+ mov dx, #0x0cf8
+ out dx, eax
++ pop edx
+ ret
+
+ use16 386
+@@ -8536,57 +8565,69 @@
+ cmp al, #0x08
+ jne pci_real_f09
+ call pci_real_select_reg
++ push dx
+ mov dx, di
+ and dx, #0x03
+ add dx, #0x0cfc
+ in al, dx
++ pop dx
+ mov cl, al
+ jmp pci_real_ok
+ pci_real_f09: ;; read configuration word
+ cmp al, #0x09
+ jne pci_real_f0a
+ call pci_real_select_reg
++ push dx
+ mov dx, di
+ and dx, #0x02
+ add dx, #0x0cfc
+ in ax, dx
++ pop dx
+ mov cx, ax
+ jmp pci_real_ok
+ pci_real_f0a: ;; read configuration dword
+ cmp al, #0x0a
+ jne pci_real_f0b
+ call pci_real_select_reg
++ push dx
+ mov dx, #0x0cfc
+ in eax, dx
++ pop dx
+ mov ecx, eax
+ jmp pci_real_ok
+ pci_real_f0b: ;; write configuration byte
+ cmp al, #0x0b
+ jne pci_real_f0c
+ call pci_real_select_reg
++ push dx
+ mov dx, di
+ and dx, #0x03
+ add dx, #0x0cfc
+ mov al, cl
+ out dx, al
++ pop dx
+ jmp pci_real_ok
+ pci_real_f0c: ;; write configuration word
+ cmp al, #0x0c
+ jne pci_real_f0d
+ call pci_real_select_reg
++ push dx
+ mov dx, di
+ and dx, #0x02
+ add dx, #0x0cfc
+ mov ax, cx
+ out dx, ax
++ pop dx
+ jmp pci_real_ok
+ pci_real_f0d: ;; write configuration dword
+ cmp al, #0x0d
+ jne pci_real_unknown
+ call pci_real_select_reg
++ push dx
+ mov dx, #0x0cfc
+ mov eax, ecx
+ out dx, eax
++ pop dx
+ jmp pci_real_ok
+ pci_real_unknown:
+ mov ah, #0x81
+@@ -8599,6 +8640,7 @@
+ ret
+
+ pci_real_select_reg:
++ push dx
+ mov eax, #0x800000
+ mov ax, bx
+ shl eax, #8
+@@ -8607,6 +8649,7 @@
+ and al, #0xfc
+ mov dx, #0x0cf8
+ out dx, eax
++ pop dx
+ ret
+
+ .align 16