Revision 8da3ff18 hw/g364fb.c
b/hw/g364fb.c | ||
---|---|---|
26 | 26 |
//#define DEBUG_G364 |
27 | 27 |
|
28 | 28 |
typedef struct G364State { |
29 |
target_phys_addr_t vram_base; |
|
30 | 29 |
unsigned int vram_size; |
31 | 30 |
uint8_t *vram_buffer; |
32 | 31 |
uint32_t ctla; |
... | ... | |
300 | 299 |
static uint32_t g364fb_mem_readb(void *opaque, target_phys_addr_t addr) |
301 | 300 |
{ |
302 | 301 |
G364State *s = opaque; |
303 |
target_phys_addr_t relative_addr = addr - s->vram_base; |
|
304 | 302 |
|
305 |
return s->vram_buffer[relative_addr];
|
|
303 |
return s->vram_buffer[addr]; |
|
306 | 304 |
} |
307 | 305 |
|
308 | 306 |
static uint32_t g364fb_mem_readw(void *opaque, target_phys_addr_t addr) |
... | ... | |
326 | 324 |
static void g364fb_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) |
327 | 325 |
{ |
328 | 326 |
G364State *s = opaque; |
329 |
target_phys_addr_t relative_addr = addr - s->vram_base; |
|
330 | 327 |
|
331 |
s->vram_buffer[relative_addr] = val;
|
|
328 |
s->vram_buffer[addr] = val; |
|
332 | 329 |
} |
333 | 330 |
|
334 | 331 |
static void g364fb_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val) |
... | ... | |
375 | 372 |
g364fb_reset(s); |
376 | 373 |
|
377 | 374 |
s->ds = ds; |
378 |
s->vram_base = vram_base; |
|
379 | 375 |
|
380 | 376 |
s->console = graphic_console_init(ds, g364fb_update_display, |
381 | 377 |
g364fb_invalidate_display, |
382 | 378 |
g364fb_screen_dump, NULL, s); |
383 | 379 |
|
384 | 380 |
io_vram = cpu_register_io_memory(0, g364fb_mem_read, g364fb_mem_write, s); |
385 |
cpu_register_physical_memory(s->vram_base, vram_size, io_vram);
|
|
381 |
cpu_register_physical_memory(vram_base, vram_size, io_vram); |
|
386 | 382 |
|
387 | 383 |
io_ctrl = cpu_register_io_memory(0, g364fb_ctrl_read, g364fb_ctrl_write, s); |
388 | 384 |
cpu_register_physical_memory(ctrl_base, 0x10000, io_ctrl); |
Also available in: Unified diff