Revision a4bc3afc hw/serial.c
b/hw/serial.c | ||
---|---|---|
371 | 371 |
} |
372 | 372 |
|
373 | 373 |
/* Memory mapped interface */ |
374 |
static uint32_t serial_mm_readb (void *opaque, target_phys_addr_t addr)
|
|
374 |
uint32_t serial_mm_readb (void *opaque, target_phys_addr_t addr) |
|
375 | 375 |
{ |
376 | 376 |
SerialState *s = opaque; |
377 | 377 |
|
378 | 378 |
return serial_ioport_read(s, (addr - s->base) >> s->it_shift) & 0xFF; |
379 | 379 |
} |
380 | 380 |
|
381 |
static void serial_mm_writeb (void *opaque,
|
|
382 |
target_phys_addr_t addr, uint32_t value)
|
|
381 |
void serial_mm_writeb (void *opaque, |
|
382 |
target_phys_addr_t addr, uint32_t value) |
|
383 | 383 |
{ |
384 | 384 |
SerialState *s = opaque; |
385 | 385 |
|
386 | 386 |
serial_ioport_write(s, (addr - s->base) >> s->it_shift, value & 0xFF); |
387 | 387 |
} |
388 | 388 |
|
389 |
static uint32_t serial_mm_readw (void *opaque, target_phys_addr_t addr)
|
|
389 |
uint32_t serial_mm_readw (void *opaque, target_phys_addr_t addr) |
|
390 | 390 |
{ |
391 | 391 |
SerialState *s = opaque; |
392 | 392 |
|
393 | 393 |
return serial_ioport_read(s, (addr - s->base) >> s->it_shift) & 0xFFFF; |
394 | 394 |
} |
395 | 395 |
|
396 |
static void serial_mm_writew (void *opaque,
|
|
397 |
target_phys_addr_t addr, uint32_t value)
|
|
396 |
void serial_mm_writew (void *opaque, |
|
397 |
target_phys_addr_t addr, uint32_t value) |
|
398 | 398 |
{ |
399 | 399 |
SerialState *s = opaque; |
400 | 400 |
|
401 | 401 |
serial_ioport_write(s, (addr - s->base) >> s->it_shift, value & 0xFFFF); |
402 | 402 |
} |
403 | 403 |
|
404 |
static uint32_t serial_mm_readl (void *opaque, target_phys_addr_t addr)
|
|
404 |
uint32_t serial_mm_readl (void *opaque, target_phys_addr_t addr) |
|
405 | 405 |
{ |
406 | 406 |
SerialState *s = opaque; |
407 | 407 |
|
408 | 408 |
return serial_ioport_read(s, (addr - s->base) >> s->it_shift); |
409 | 409 |
} |
410 | 410 |
|
411 |
static void serial_mm_writel (void *opaque,
|
|
412 |
target_phys_addr_t addr, uint32_t value)
|
|
411 |
void serial_mm_writel (void *opaque, |
|
412 |
target_phys_addr_t addr, uint32_t value) |
|
413 | 413 |
{ |
414 | 414 |
SerialState *s = opaque; |
415 | 415 |
|
... | ... | |
430 | 430 |
|
431 | 431 |
SerialState *serial_mm_init (SetIRQFunc *set_irq, void *opaque, |
432 | 432 |
target_ulong base, int it_shift, |
433 |
int irq, CharDriverState *chr) |
|
433 |
int irq, CharDriverState *chr, |
|
434 |
int ioregister) |
|
434 | 435 |
{ |
435 | 436 |
SerialState *s; |
436 | 437 |
int s_io_memory; |
... | ... | |
449 | 450 |
|
450 | 451 |
register_savevm("serial", base, 2, serial_save, serial_load, s); |
451 | 452 |
|
452 |
s_io_memory = cpu_register_io_memory(0, serial_mm_read, |
|
453 |
serial_mm_write, s); |
|
454 |
cpu_register_physical_memory(base, 8 << it_shift, s_io_memory); |
|
453 |
if (ioregister) { |
|
454 |
s_io_memory = cpu_register_io_memory(0, serial_mm_read, |
|
455 |
serial_mm_write, s); |
|
456 |
cpu_register_physical_memory(base, 8 << it_shift, s_io_memory); |
|
457 |
} |
|
455 | 458 |
s->chr = chr; |
456 | 459 |
qemu_chr_add_handlers(chr, serial_can_receive1, serial_receive1, |
457 | 460 |
serial_event, s); |
Also available in: Unified diff