Revision 99a0949b hw/g364fb.c
b/hw/g364fb.c | ||
---|---|---|
36 | 36 |
typedef struct G364State { |
37 | 37 |
/* hardware */ |
38 | 38 |
uint8_t *vram; |
39 |
ram_addr_t vram_offset;
|
|
39 |
a_ram_addr vram_offset;
|
|
40 | 40 |
int vram_size; |
41 | 41 |
qemu_irq irq; |
42 | 42 |
/* registers */ |
... | ... | |
68 | 68 |
#define CTLA_FORCE_BLANK 0x00000400 |
69 | 69 |
#define CTLA_NO_CURSOR 0x00800000 |
70 | 70 |
|
71 |
static inline int check_dirty(ram_addr_t page)
|
|
71 |
static inline int check_dirty(a_ram_addr page)
|
|
72 | 72 |
{ |
73 | 73 |
return cpu_physical_memory_get_dirty(page, VGA_DIRTY_FLAG); |
74 | 74 |
} |
75 | 75 |
|
76 | 76 |
static inline void reset_dirty(G364State *s, |
77 |
ram_addr_t page_min, ram_addr_t page_max)
|
|
77 |
a_ram_addr page_min, a_ram_addr page_max)
|
|
78 | 78 |
{ |
79 | 79 |
cpu_physical_memory_reset_dirty(page_min, page_max + TARGET_PAGE_SIZE - 1, |
80 | 80 |
VGA_DIRTY_FLAG); |
... | ... | |
85 | 85 |
int i, w; |
86 | 86 |
uint8_t *vram; |
87 | 87 |
uint8_t *data_display, *dd; |
88 |
ram_addr_t page, page_min, page_max;
|
|
88 |
a_ram_addr page, page_min, page_max;
|
|
89 | 89 |
int x, y; |
90 | 90 |
int xmin, xmax; |
91 | 91 |
int ymin, ymax; |
... | ... | |
115 | 115 |
} |
116 | 116 |
|
117 | 117 |
page = s->vram_offset; |
118 |
page_min = (ram_addr_t)-1;
|
|
118 |
page_min = (a_ram_addr)-1;
|
|
119 | 119 |
page_max = 0; |
120 | 120 |
|
121 | 121 |
x = y = 0; |
... | ... | |
138 | 138 |
if (check_dirty(page)) { |
139 | 139 |
if (y < ymin) |
140 | 140 |
ymin = ymax = y; |
141 |
if (page_min == (ram_addr_t)-1)
|
|
141 |
if (page_min == (a_ram_addr)-1)
|
|
142 | 142 |
page_min = page; |
143 | 143 |
page_max = page; |
144 | 144 |
if (x < xmin) |
... | ... | |
197 | 197 |
ymax = y; |
198 | 198 |
} else { |
199 | 199 |
int dy; |
200 |
if (page_min != (ram_addr_t)-1) {
|
|
200 |
if (page_min != (a_ram_addr)-1) {
|
|
201 | 201 |
reset_dirty(s, page_min, page_max); |
202 |
page_min = (ram_addr_t)-1;
|
|
202 |
page_min = (a_ram_addr)-1;
|
|
203 | 203 |
page_max = 0; |
204 | 204 |
dpy_update(s->ds, xmin, ymin, xmax - xmin + 1, ymax - ymin + 1); |
205 | 205 |
xmin = s->width; |
... | ... | |
219 | 219 |
} |
220 | 220 |
|
221 | 221 |
done: |
222 |
if (page_min != (ram_addr_t)-1) {
|
|
222 |
if (page_min != (a_ram_addr)-1) {
|
|
223 | 223 |
dpy_update(s->ds, xmin, ymin, xmax - xmin + 1, ymax - ymin + 1); |
224 | 224 |
reset_dirty(s, page_min, page_max); |
225 | 225 |
} |
... | ... | |
336 | 336 |
} |
337 | 337 |
|
338 | 338 |
/* called for accesses to io ports */ |
339 |
static uint32_t g364fb_ctrl_readl(void *opaque, target_phys_addr_t addr)
|
|
339 |
static uint32_t g364fb_ctrl_readl(void *opaque, a_target_phys_addr addr)
|
|
340 | 340 |
{ |
341 | 341 |
G364State *s = opaque; |
342 | 342 |
uint32_t val; |
... | ... | |
379 | 379 |
return val; |
380 | 380 |
} |
381 | 381 |
|
382 |
static uint32_t g364fb_ctrl_readw(void *opaque, target_phys_addr_t addr)
|
|
382 |
static uint32_t g364fb_ctrl_readw(void *opaque, a_target_phys_addr addr)
|
|
383 | 383 |
{ |
384 | 384 |
uint32_t v = g364fb_ctrl_readl(opaque, addr & ~0x3); |
385 | 385 |
if (addr & 0x2) |
... | ... | |
388 | 388 |
return v & 0xffff; |
389 | 389 |
} |
390 | 390 |
|
391 |
static uint32_t g364fb_ctrl_readb(void *opaque, target_phys_addr_t addr)
|
|
391 |
static uint32_t g364fb_ctrl_readb(void *opaque, a_target_phys_addr addr)
|
|
392 | 392 |
{ |
393 | 393 |
uint32_t v = g364fb_ctrl_readl(opaque, addr & ~0x3); |
394 | 394 |
return (v >> (8 * (addr & 0x3))) & 0xff; |
... | ... | |
415 | 415 |
} |
416 | 416 |
} |
417 | 417 |
|
418 |
static void g364fb_ctrl_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
418 |
static void g364fb_ctrl_writel(void *opaque, a_target_phys_addr addr, uint32_t val)
|
|
419 | 419 |
{ |
420 | 420 |
G364State *s = opaque; |
421 | 421 |
|
... | ... | |
490 | 490 |
qemu_irq_lower(s->irq); |
491 | 491 |
} |
492 | 492 |
|
493 |
static void g364fb_ctrl_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
493 |
static void g364fb_ctrl_writew(void *opaque, a_target_phys_addr addr, uint32_t val)
|
|
494 | 494 |
{ |
495 | 495 |
uint32_t old_val = g364fb_ctrl_readl(opaque, addr & ~0x3); |
496 | 496 |
|
... | ... | |
501 | 501 |
g364fb_ctrl_writel(opaque, addr & ~0x3, val); |
502 | 502 |
} |
503 | 503 |
|
504 |
static void g364fb_ctrl_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
|
|
504 |
static void g364fb_ctrl_writeb(void *opaque, a_target_phys_addr addr, uint32_t val)
|
|
505 | 505 |
{ |
506 | 506 |
uint32_t old_val = g364fb_ctrl_readl(opaque, addr & ~0x3); |
507 | 507 |
|
... | ... | |
583 | 583 |
qemu_put_be32(f, s->height); |
584 | 584 |
} |
585 | 585 |
|
586 |
int g364fb_mm_init(target_phys_addr_t vram_base,
|
|
587 |
target_phys_addr_t ctrl_base, int it_shift,
|
|
586 |
int g364fb_mm_init(a_target_phys_addr vram_base,
|
|
587 |
a_target_phys_addr ctrl_base, int it_shift,
|
|
588 | 588 |
qemu_irq irq) |
589 | 589 |
{ |
590 | 590 |
G364State *s; |
Also available in: Unified diff