summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-05-06 15:11:39 +0200
committerGerd Hoffmann <kraxel@redhat.com>2010-06-18 12:13:23 +0200
commit846780ebcad7a907383173bd2f4fcc4e520e4611 (patch)
tree52edc671c938c240e27f3c2eeeb5eb0e9f0f66c8
parentbe965ab705738d3dfe21ab2bafb15a92639ae50c (diff)
downloadqemu-vgabios-846780ebcad7a907383173bd2f4fcc4e520e4611.tar.gz
update pci_get_lfb_addr for vmware vga
vmware vga has the framebuffer at pci region 1 not 0. This patch makes pci_get_lfb_addr check region 1 too. It also gives names to the numbered labels to make the code more readable.
-rw-r--r--vgabios.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/vgabios.c b/vgabios.c
index 2e8b5d7..c1e312b 100644
--- a/vgabios.c
+++ b/vgabios.c
@@ -3852,26 +3852,31 @@ _pci_get_lfb_addr:
mov dl, #0x00
call pci_read_reg
cmp ax, #0xffff
- jz pci_get_lfb_addr_5
- pci_get_lfb_addr_3:
+ jz pci_get_lfb_addr_fail
+ pci_get_lfb_addr_next_dev:
mov dl, #0x00
call pci_read_reg
cmp ax, bx ;; check vendor
- jz pci_get_lfb_addr_4
+ jz pci_get_lfb_addr_found
add cx, #0x8
cmp cx, #0x200 ;; search bus #0 and #1
- jb pci_get_lfb_addr_3
- pci_get_lfb_addr_5:
+ jb pci_get_lfb_addr_next_dev
+ pci_get_lfb_addr_fail:
xor dx, dx ;; no LFB
- jmp pci_get_lfb_addr_6
- pci_get_lfb_addr_4:
+ jmp pci_get_lfb_addr_return
+ pci_get_lfb_addr_found:
mov dl, #0x10 ;; I/O space #0
call pci_read_reg
test ax, #0xfff1
- jnz pci_get_lfb_addr_5
+ jz pci_get_lfb_addr_success
+ mov dl, #0x14 ;; I/O space #1
+ call pci_read_reg
+ test ax, #0xfff1
+ jnz pci_get_lfb_addr_fail
+ pci_get_lfb_addr_success:
shr eax, #16
mov dx, ax ;; LFB address
- pci_get_lfb_addr_6:
+ pci_get_lfb_addr_return:
pop eax
mov ax, dx
pop dx