static void xen_platform_ioport_writeb(void *opaque, uint32_t addr, uint32_t val) { PCIXenPlatformState *s = opaque; switch (addr) { case 0: /* Platform flags */ platform_fixed_ioport_writeb(opaque, 0, val); break; case 8: log_writeb(s, val); break; default: break; } }
static void xen_platform_ioport_writeb(void *opaque, hwaddr addr, uint64_t val, unsigned int size) { PCIXenPlatformState *s = opaque; switch (addr) { case 0: /* Platform flags */ platform_fixed_ioport_writeb(opaque, 0, (uint32_t)val); break; case 8: log_writeb(s, (uint32_t)val); break; default: break; } }
static void platform_fixed_ioport_writeb(void *opaque, uint32_t addr, uint32_t val) { PCIXenPlatformState *s = opaque; switch (addr) { case 0: /* Platform flags */ { hvmmem_type_t mem_type = (val & PFFLAG_ROM_LOCK) ? HVMMEM_ram_ro : HVMMEM_ram_rw; if (xc_hvm_set_mem_type(xen_xc, xen_domid, mem_type, 0xc0, 0x40)) { DPRINTF("unable to change ro/rw state of ROM memory area!\n"); } else { s->flags = val & PFFLAG_ROM_LOCK; DPRINTF("changed ro/rw state of ROM memory area. now is %s state.\n", (mem_type == HVMMEM_ram_ro ? "ro":"rw")); } break; } case 2: log_writeb(s, val); break; } }