Revision d5295253 hw/vga.c

b/hw/vga.c
1654 1654
                    uint32_t addr, uint32_t size, int type)
1655 1655
{
1656 1656
    VGAState *s = vga_state;
1657

  
1658
    cpu_register_physical_memory(addr, s->vram_size, s->vram_offset);
1657
    if (region_num == PCI_ROM_SLOT) {
1658
        cpu_register_physical_memory(addr, s->bios_size, s->bios_offset);
1659
    } else {
1660
        cpu_register_physical_memory(addr, s->vram_size, s->vram_offset);
1661
    }
1659 1662
}
1660 1663

  
1661 1664
void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, 
......
1701 1704

  
1702 1705

  
1703 1706
int vga_initialize(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
1704
                   unsigned long vga_ram_offset, int vga_ram_size)
1707
                   unsigned long vga_ram_offset, int vga_ram_size,
1708
                   unsigned long vga_bios_offset, int vga_bios_size)
1705 1709
{
1706 1710
    VGAState *s;
1707 1711

  
......
1776 1780
        /* XXX: vga_ram_size must be a power of two */
1777 1781
        pci_register_io_region(d, 0, vga_ram_size, 
1778 1782
                               PCI_ADDRESS_SPACE_MEM_PREFETCH, vga_map);
1783
        if (vga_bios_size != 0) {
1784
            unsigned int bios_total_size;
1785
            s->bios_offset = vga_bios_offset;
1786
            s->bios_size = vga_bios_size;
1787
            /* must be a power of two */
1788
            bios_total_size = 1;
1789
            while (bios_total_size < vga_bios_size)
1790
                bios_total_size <<= 1;
1791
            pci_register_io_region(d, PCI_ROM_SLOT, bios_total_size, 
1792
                                   PCI_ADDRESS_SPACE_MEM_PREFETCH, vga_map);
1793
        }
1779 1794
    } else {
1780 1795
#ifdef CONFIG_BOCHS_VBE
1781 1796
        /* XXX: use optimized standard vga accesses */

Also available in: Unified diff