VirtualBox

Changeset 40433 in vbox for trunk


Ignore:
Timestamp:
Mar 12, 2012 5:00:57 PM (13 years ago)
Author:
vboxsync
Message:

VGA: Do not hardcode LFB base in BIOS.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/Hardware/VBoxVideoVBE.h

    r39359 r40433  
    5656#define VBE_DISPI_INDEX_Y_OFFSET        0x9
    5757#define VBE_DISPI_INDEX_VBOX_VIDEO      0xa
    58 #define VBE_DISPI_INDEX_NB_SAVED        0xb /* Number of saved registers (vbe_regs array) */
    59 #define VBE_DISPI_INDEX_NB              0xb /* Total number of VBE registers */
     58#define VBE_DISPI_INDEX_FB_BASE_HI      0xb
    6059
    6160#define VBE_DISPI_ID0                   0xB0C0
  • trunk/src/VBox/Devices/Graphics/BIOS/vbe.c

    r35026 r40433  
    12221222                    write_word(ES, DI + RT_OFFSETOF(ModeInfoBlock, WinFuncPtr) + 2, 0xC000);
    12231223                }
     1224                // Update the LFB physical address which may change at runtime
     1225                outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_FB_BASE_HI);
     1226                write_word(ES, DI + RT_OFFSETOF(ModeInfoBlock, PhysBasePtr) + 2, inw(VBE_DISPI_IOPORT_DATA));
     1227
    12241228                result = 0x4f;
    12251229        }
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r40280 r40433  
    855855                break;
    856856            default:
    857                 Assert(s->vbe_index < VBE_DISPI_INDEX_NB_SAVED);
     857                Assert(s->vbe_index < VBE_DISPI_INDEX_NB);
    858858                val = s->vbe_regs[s->vbe_index];
    859859                break;
     
    866866              break;
    867867          default:
    868               Assert(s->vbe_index < VBE_DISPI_INDEX_NB_SAVED);
     868              Assert(s->vbe_index < VBE_DISPI_INDEX_NB);
    869869              val = s->vbe_regs[s->vbe_index];
    870870              break;
     
    52655265            AssertRC(rc);
    52665266            if (RT_SUCCESS(rc))
     5267            {
    52675268                pThis->GCPhysVRAM = GCPhysAddress;
     5269                pThis->vbe_regs[VBE_DISPI_INDEX_FB_BASE_HI] = GCPhysAddress >> 16;
     5270            }
    52685271        }
    52695272    }
     
    52785281        AssertRC(rc);
    52795282        pThis->GCPhysVRAM = 0;
     5283        pThis->vbe_regs[VBE_DISPI_INDEX_FB_BASE_HI];
    52805284    }
    52815285    return rc;
  • trunk/src/VBox/Devices/Graphics/DevVGA.h

    r39603 r40433  
    7676#ifdef CONFIG_BOCHS_VBE
    7777
     78/* Cross reference with <VBox/Hardware/VBoxVideoVBE.h> */
     79#define VBE_DISPI_INDEX_NB_SAVED        0xb /* Number of saved registers (vbe_regs array) */
     80#define VBE_DISPI_INDEX_NB              0xc /* Total number of VBE registers */
     81
    7882#define VGA_STATE_COMMON_BOCHS_VBE              \
    7983    uint16_t vbe_index;                         \
    80     uint16_t vbe_regs[VBE_DISPI_INDEX_NB_SAVED];\
     84    uint16_t vbe_regs[VBE_DISPI_INDEX_NB];      \
     85    uint16_t alignment[3]; /* pad to 64 bits */ \
    8186    uint32_t vbe_start_addr;                    \
    8287    uint32_t vbe_line_offset;                   \
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette