void cs_run(Suite* pSuite) { size_t i; assert(pSuite); cs_reset(pSuite); for (i = 0; i < pSuite->nTests; ++i) { assert(pSuite->pTests[i]); ct_run(pSuite->pTests[i]); } }
static void cs4231_init1(SysBusDevice *dev) { int io; CSState *s = FROM_SYSBUS(CSState, dev); io = cpu_register_io_memory(cs_mem_read, cs_mem_write, s); sysbus_init_mmio(dev, CS_SIZE, io); sysbus_init_irq(dev, &s->irq); register_savevm("cs4231", -1, 1, cs_save, cs_load, s); qemu_register_reset(cs_reset, s); cs_reset(s); }
void cs_init(target_phys_addr_t base, int irq, void *intctl) { int cs_io_memory; CSState *s; s = qemu_mallocz(sizeof(CSState)); if (!s) return; cs_io_memory = cpu_register_io_memory(0, cs_mem_read, cs_mem_write, s); cpu_register_physical_memory(base, CS_MAXADDR, cs_io_memory); register_savevm("cs4231", base, 1, cs_save, cs_load, s); qemu_register_reset(cs_reset, s); cs_reset(s); }
static void cs_mem_write(void *opaque, target_phys_addr_t addr, uint64_t val, unsigned size) { CSState *s = opaque; uint32_t saddr; saddr = addr >> 2; trace_cs4231_mem_writel_reg(saddr, s->regs[saddr], val); switch (saddr) { case 1: trace_cs4231_mem_writel_dreg(CS_RAP(s), s->dregs[CS_RAP(s)], val); switch(CS_RAP(s)) { case 11: case 25: // Read only break; case 12: val &= 0x40; val |= CS_CDC_VER; // Codec version s->dregs[CS_RAP(s)] = val; break; default: s->dregs[CS_RAP(s)] = val; break; } break; case 2: // Read only break; case 4: if (val & 1) { cs_reset(&s->busdev.qdev); } val &= 0x7f; s->regs[saddr] = val; break; default: s->regs[saddr] = val; break; } }
static void cs_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val) { CSState *s = opaque; uint32_t saddr; saddr = addr >> 2; DPRINTF("write reg[%d]: 0x%8.8x -> 0x%8.8x\n", saddr, s->regs[saddr], val); switch (saddr) { case 1: DPRINTF("write dreg[%d]: 0x%2.2x -> 0x%2.2x\n", CS_RAP(s), s->dregs[CS_RAP(s)], val); switch(CS_RAP(s)) { case 11: case 25: // Read only break; case 12: val &= 0x40; val |= CS_CDC_VER; // Codec version s->dregs[CS_RAP(s)] = val; break; default: s->dregs[CS_RAP(s)] = val; break; } break; case 2: // Read only break; case 4: if (val & 1) cs_reset(s); val &= 0x7f; s->regs[saddr] = val; break; default: s->regs[saddr] = val; break; } }