#pragma once #include namespace weee::core { struct mem; struct dsp { dsp(mem &); ircolib::u16 read16(ircolib::u32); void write16(ircolib::u32, ircolib::u16); ircolib::u32 read32(ircolib::u32); void write32(ircolib::u32, ircolib::u32); union Csr { struct { unsigned res : 1; unsigned piint : 1; unsigned halt : 1; unsigned aidint : 1; unsigned aidint_mask : 1; unsigned arint : 1; unsigned arint_mask : 1; unsigned dspint : 1; unsigned dspint_mask : 1; unsigned int_status : 1; unsigned : 1; unsigned boot_mode : 1; unsigned : 4; }; ircolib::u16 raw; } csr; union { struct { ircolib::u32 lo; ircolib::u32 hi; }; ircolib::u64 whole; } ar_dma_mmaddr, ar_dma_araddr, ar_dma_cnt, dma_start_addr; ircolib::u16 ar_size; ircolib::u16 dsp_mail_hi = 0, dsp_mail_lo = 0, cpu_mail_hi = 0, cpu_mail_lo = 0; }; } // namespace weee::core