int undo_mmio_write(void *p) { struct undo_mmio_write_data *data = p; msg_pdbg("Restoring MMIO space at %p\n", data->addr); switch (data->type) { case mmio_write_type_b: mmio_writeb(data->bdata, data->addr); break; case mmio_write_type_w: mmio_writew(data->wdata, data->addr); break; case mmio_write_type_l: mmio_writel(data->ldata, data->addr); break; } /* p was allocated in register_undo_mmio_write. */ free(p); return 0; }
void mmio_le_writew(uint16_t val, void *addr) { mmio_writew(cpu_to_le16(val), addr); }
static void internal_chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr) { mmio_writew(val, (void *) addr); }
void rmmio_writew(uint16_t val, void *addr) { register_undo_mmio_writew(addr); mmio_writew(val, addr); }