static void r2d_fpga_irq_set(void *opaque, int n, int level) { r2d_fpga_t *fpga = opaque; if (level) fpga->irlmon |= irqtab[n].msk; else fpga->irlmon &= ~irqtab[n].msk; update_irl(fpga); }
static void r2d_fpga_write(void *opaque, target_phys_addr_t addr, uint32_t value) { r2d_fpga_t *s = opaque; switch (addr) { case PA_IRLMSK: s->irlmsk = value; update_irl(s); break; case PA_OUTPORT: s->outport = value; break; case PA_POWOFF: s->powoff = value; break; case PA_VERREG: /* Discard writes */ break; } }
static void r2d_fpga_write(void *opaque, hwaddr addr, uint64_t value, unsigned int size) { r2d_fpga_t *s = opaque; switch (addr) { case PA_IRLMSK: s->irlmsk = value; update_irl(s); break; case PA_OUTPORT: s->outport = value; break; case PA_POWOFF: if (value & 1) { qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); } break; case PA_VERREG: /* Discard writes */ break; } }
static void r2d_fpga_write(void *opaque, target_phys_addr_t addr, uint32_t value) { r2d_fpga_t *s = opaque; switch (addr) { case PA_IRLMSK: s->irlmsk = value; update_irl(s); break; case PA_OUTPORT: s->outport = value; break; case PA_POWOFF: if (value & 1) { qemu_system_shutdown_request(); } break; case PA_VERREG: /* Discard writes */ break; } }