Revision a4193c8a hw/vga.c
b/hw/vga.c | ||
---|---|---|
656 | 656 |
#endif |
657 | 657 |
|
658 | 658 |
/* called for accesses between 0xa0000 and 0xc0000 */ |
659 |
static uint32_t vga_mem_readb(target_phys_addr_t addr) |
|
659 |
static uint32_t vga_mem_readb(void *opaque, target_phys_addr_t addr)
|
|
660 | 660 |
{ |
661 |
VGAState *s = &vga_state;
|
|
661 |
VGAState *s = opaque;
|
|
662 | 662 |
int memory_map_mode, plane; |
663 | 663 |
uint32_t ret; |
664 | 664 |
|
... | ... | |
712 | 712 |
return ret; |
713 | 713 |
} |
714 | 714 |
|
715 |
static uint32_t vga_mem_readw(target_phys_addr_t addr) |
|
715 |
static uint32_t vga_mem_readw(void *opaque, target_phys_addr_t addr)
|
|
716 | 716 |
{ |
717 | 717 |
uint32_t v; |
718 | 718 |
#ifdef TARGET_WORDS_BIGENDIAN |
719 |
v = vga_mem_readb(addr) << 8; |
|
720 |
v |= vga_mem_readb(addr + 1); |
|
719 |
v = vga_mem_readb(opaque, addr) << 8;
|
|
720 |
v |= vga_mem_readb(opaque, addr + 1);
|
|
721 | 721 |
#else |
722 |
v = vga_mem_readb(addr); |
|
723 |
v |= vga_mem_readb(addr + 1) << 8; |
|
722 |
v = vga_mem_readb(opaque, addr);
|
|
723 |
v |= vga_mem_readb(opaque, addr + 1) << 8;
|
|
724 | 724 |
#endif |
725 | 725 |
return v; |
726 | 726 |
} |
727 | 727 |
|
728 |
static uint32_t vga_mem_readl(target_phys_addr_t addr) |
|
728 |
static uint32_t vga_mem_readl(void *opaque, target_phys_addr_t addr)
|
|
729 | 729 |
{ |
730 | 730 |
uint32_t v; |
731 | 731 |
#ifdef TARGET_WORDS_BIGENDIAN |
732 |
v = vga_mem_readb(addr) << 24; |
|
733 |
v |= vga_mem_readb(addr + 1) << 16; |
|
734 |
v |= vga_mem_readb(addr + 2) << 8; |
|
735 |
v |= vga_mem_readb(addr + 3); |
|
732 |
v = vga_mem_readb(opaque, addr) << 24;
|
|
733 |
v |= vga_mem_readb(opaque, addr + 1) << 16;
|
|
734 |
v |= vga_mem_readb(opaque, addr + 2) << 8;
|
|
735 |
v |= vga_mem_readb(opaque, addr + 3);
|
|
736 | 736 |
#else |
737 |
v = vga_mem_readb(addr); |
|
738 |
v |= vga_mem_readb(addr + 1) << 8; |
|
739 |
v |= vga_mem_readb(addr + 2) << 16; |
|
740 |
v |= vga_mem_readb(addr + 3) << 24; |
|
737 |
v = vga_mem_readb(opaque, addr);
|
|
738 |
v |= vga_mem_readb(opaque, addr + 1) << 8;
|
|
739 |
v |= vga_mem_readb(opaque, addr + 2) << 16;
|
|
740 |
v |= vga_mem_readb(opaque, addr + 3) << 24;
|
|
741 | 741 |
#endif |
742 | 742 |
return v; |
743 | 743 |
} |
744 | 744 |
|
745 | 745 |
/* called for accesses between 0xa0000 and 0xc0000 */ |
746 |
static void vga_mem_writeb(target_phys_addr_t addr, uint32_t val) |
|
746 |
static void vga_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
747 | 747 |
{ |
748 |
VGAState *s = &vga_state;
|
|
748 |
VGAState *s = opaque;
|
|
749 | 749 |
int memory_map_mode, plane, write_mode, b, func_select; |
750 | 750 |
uint32_t write_mask, bit_mask, set_mask; |
751 | 751 |
|
... | ... | |
871 | 871 |
} |
872 | 872 |
} |
873 | 873 |
|
874 |
static void vga_mem_writew(target_phys_addr_t addr, uint32_t val) |
|
874 |
static void vga_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
875 | 875 |
{ |
876 | 876 |
#ifdef TARGET_WORDS_BIGENDIAN |
877 |
vga_mem_writeb(addr, (val >> 8) & 0xff); |
|
878 |
vga_mem_writeb(addr + 1, val & 0xff); |
|
877 |
vga_mem_writeb(opaque, addr, (val >> 8) & 0xff);
|
|
878 |
vga_mem_writeb(opaque, addr + 1, val & 0xff);
|
|
879 | 879 |
#else |
880 |
vga_mem_writeb(addr, val & 0xff); |
|
881 |
vga_mem_writeb(addr + 1, (val >> 8) & 0xff); |
|
880 |
vga_mem_writeb(opaque, addr, val & 0xff);
|
|
881 |
vga_mem_writeb(opaque, addr + 1, (val >> 8) & 0xff);
|
|
882 | 882 |
#endif |
883 | 883 |
} |
884 | 884 |
|
885 |
static void vga_mem_writel(target_phys_addr_t addr, uint32_t val) |
|
885 |
static void vga_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
886 | 886 |
{ |
887 | 887 |
#ifdef TARGET_WORDS_BIGENDIAN |
888 |
vga_mem_writeb(addr, (val >> 24) & 0xff); |
|
889 |
vga_mem_writeb(addr + 1, (val >> 16) & 0xff); |
|
890 |
vga_mem_writeb(addr + 2, (val >> 8) & 0xff); |
|
891 |
vga_mem_writeb(addr + 3, val & 0xff); |
|
888 |
vga_mem_writeb(opaque, addr, (val >> 24) & 0xff);
|
|
889 |
vga_mem_writeb(opaque, addr + 1, (val >> 16) & 0xff);
|
|
890 |
vga_mem_writeb(opaque, addr + 2, (val >> 8) & 0xff);
|
|
891 |
vga_mem_writeb(opaque, addr + 3, val & 0xff);
|
|
892 | 892 |
#else |
893 |
vga_mem_writeb(addr, val & 0xff); |
|
894 |
vga_mem_writeb(addr + 1, (val >> 8) & 0xff); |
|
895 |
vga_mem_writeb(addr + 2, (val >> 16) & 0xff); |
|
896 |
vga_mem_writeb(addr + 3, (val >> 24) & 0xff); |
|
893 |
vga_mem_writeb(opaque, addr, val & 0xff);
|
|
894 |
vga_mem_writeb(opaque, addr + 1, (val >> 8) & 0xff);
|
|
895 |
vga_mem_writeb(opaque, addr + 2, (val >> 16) & 0xff);
|
|
896 |
vga_mem_writeb(opaque, addr + 3, (val >> 24) & 0xff);
|
|
897 | 897 |
#endif |
898 | 898 |
} |
899 | 899 |
|
... | ... | |
1826 | 1826 |
#endif |
1827 | 1827 |
#endif /* CONFIG_BOCHS_VBE */ |
1828 | 1828 |
|
1829 |
vga_io_memory = cpu_register_io_memory(0, vga_mem_read, vga_mem_write); |
|
1829 |
vga_io_memory = cpu_register_io_memory(0, vga_mem_read, vga_mem_write, s);
|
|
1830 | 1830 |
cpu_register_physical_memory(isa_mem_base + 0x000a0000, 0x20000, |
1831 | 1831 |
vga_io_memory); |
1832 | 1832 |
|
Also available in: Unified diff