Revision a815b166

b/hw/cirrus_vga.c
1956 1956
 *
1957 1957
 ***************************************/
1958 1958

  
1959
static uint32_t cirrus_vga_mem_readb(void *opaque, target_phys_addr_t addr)
1959
static uint64_t cirrus_vga_mem_read(void *opaque,
1960
                                    target_phys_addr_t addr,
1961
                                    uint32_t size)
1960 1962
{
1961 1963
    CirrusVGAState *s = opaque;
1962 1964
    unsigned bank_index;
......
1967 1969
	return vga_mem_readb(s, addr);
1968 1970
    }
1969 1971

  
1970
    addr &= 0x1ffff;
1971

  
1972 1972
    if (addr < 0x10000) {
1973 1973
	/* XXX handle bitblt */
1974 1974
	/* video memory */
......
2000 2000
    return val;
2001 2001
}
2002 2002

  
2003
static uint32_t cirrus_vga_mem_readw(void *opaque, target_phys_addr_t addr)
2004
{
2005
    uint32_t v;
2006

  
2007
    v = cirrus_vga_mem_readb(opaque, addr);
2008
    v |= cirrus_vga_mem_readb(opaque, addr + 1) << 8;
2009
    return v;
2010
}
2011

  
2012
static uint32_t cirrus_vga_mem_readl(void *opaque, target_phys_addr_t addr)
2013
{
2014
    uint32_t v;
2015

  
2016
    v = cirrus_vga_mem_readb(opaque, addr);
2017
    v |= cirrus_vga_mem_readb(opaque, addr + 1) << 8;
2018
    v |= cirrus_vga_mem_readb(opaque, addr + 2) << 16;
2019
    v |= cirrus_vga_mem_readb(opaque, addr + 3) << 24;
2020
    return v;
2021
}
2022

  
2023
static void cirrus_vga_mem_writeb(void *opaque, target_phys_addr_t addr,
2024
                                  uint32_t mem_value)
2003
static void cirrus_vga_mem_write(void *opaque,
2004
                                 target_phys_addr_t addr,
2005
                                 uint64_t mem_value,
2006
                                 uint32_t size)
2025 2007
{
2026 2008
    CirrusVGAState *s = opaque;
2027 2009
    unsigned bank_index;
......
2033 2015
        return;
2034 2016
    }
2035 2017

  
2036
    addr &= 0x1ffff;
2037

  
2038 2018
    if (addr < 0x10000) {
2039 2019
	if (s->cirrus_srcptr != s->cirrus_srcptr_end) {
2040 2020
	    /* bitblt */
......
2084 2064
    }
2085 2065
}
2086 2066

  
2087
static void cirrus_vga_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
2088
{
2089
    cirrus_vga_mem_writeb(opaque, addr, val & 0xff);
2090
    cirrus_vga_mem_writeb(opaque, addr + 1, (val >> 8) & 0xff);
2091
}
2092

  
2093
static void cirrus_vga_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
2094
{
2095
    cirrus_vga_mem_writeb(opaque, addr, val & 0xff);
2096
    cirrus_vga_mem_writeb(opaque, addr + 1, (val >> 8) & 0xff);
2097
    cirrus_vga_mem_writeb(opaque, addr + 2, (val >> 16) & 0xff);
2098
    cirrus_vga_mem_writeb(opaque, addr + 3, (val >> 24) & 0xff);
2099
}
2100

  
2101
static uint64_t cirrus_vga_mem_read(void *opaque,
2102
                                    target_phys_addr_t addr,
2103
                                    uint32_t size)
2104
{
2105
    CirrusVGAState *s = opaque;
2106

  
2107
    switch (size) {
2108
    case 1: return cirrus_vga_mem_readb(s, addr);
2109
    case 2: return cirrus_vga_mem_readw(s, addr);
2110
    case 4: return cirrus_vga_mem_readl(s, addr);
2111
    default: abort();
2112
    }
2113
}
2114

  
2115
static void cirrus_vga_mem_write(void *opaque, target_phys_addr_t addr,
2116
                                 uint64_t data, unsigned size)
2117
{
2118
    CirrusVGAState *s = opaque;
2119

  
2120
    switch (size) {
2121
    case 1: return cirrus_vga_mem_writeb(s, addr, data);
2122
    case 2: return cirrus_vga_mem_writew(s, addr, data);
2123
    case 4: return cirrus_vga_mem_writel(s, addr, data);
2124
    default: abort();
2125
    }
2126
};
2127

  
2128 2067
static const MemoryRegionOps cirrus_vga_mem_ops = {
2129 2068
    .read = cirrus_vga_mem_read,
2130 2069
    .write = cirrus_vga_mem_write,
2131 2070
    .endianness = DEVICE_LITTLE_ENDIAN,
2071
    .impl = {
2072
        .min_access_size = 1,
2073
        .max_access_size = 1,
2074
    },
2132 2075
};
2133 2076

  
2134 2077
/***************************************

Also available in: Unified diff