Annotation of nono/vm/dmac.h, revision 1.1

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2017 [email protected]
        !             4: //
        !             5: 
        !             6: #pragma once
        !             7: 
        !             8: #include "device.h"
        !             9: 
        !            10: struct DMAC
        !            11: {
        !            12:        static const int CSR = 0x00;    // .B
        !            13:        static const int CER = 0x01;    // .B
        !            14:        static const int DCR = 0x04;    // .B
        !            15:        static const int OCR = 0x05;    // .B
        !            16:        static const int SCR = 0x06;    // .B
        !            17:        static const int CCR = 0x07;    // .B
        !            18:        static const int MTC = 0x0a;    // .W
        !            19:        static const int MAR = 0x0c;    // .L
        !            20:        static const int DAR = 0x14;    // .L
        !            21:        static const int BTC = 0x1a;    // .W
        !            22:        static const int BAR = 0x1c;    // .L
        !            23:        static const int NIV = 0x25;    // .B
        !            24:        static const int EIV = 0x27;    // .B
        !            25:        static const int MFC = 0x29;    // .B
        !            26:        static const int CPR = 0x2d;    // .B
        !            27:        static const int DFC = 0x31;    // .B
        !            28:        static const int BFC = 0x39;    // .B
        !            29:        static const int GCR = 0x3f;    // .B (ch#3のみ)
        !            30: 
        !            31:        // 各チャンネル
        !            32:        struct channel {
        !            33:                uint8 csr;
        !            34:                uint8 cer;
        !            35:                uint8 dcr;
        !            36:                uint8 ocr;
        !            37:                uint8 scr;
        !            38:                uint8 ccr;
        !            39:                uint16 mtc;
        !            40:                uint32 mar;
        !            41:                uint32 dar;
        !            42:                uint16 btc;
        !            43:                uint32 bar;
        !            44:                uint8 niv;
        !            45:                uint8 eiv;
        !            46:                uint8 mfc;
        !            47:                uint8 cpr;
        !            48:                uint8 dfc;
        !            49:                uint8 bfc;
        !            50:        } chan[4];
        !            51: 
        !            52:        // 全体
        !            53:        uint8 gcr;
        !            54: };
        !            55: 
        !            56: class DMACDevice
        !            57:        : public IODevice
        !            58: {
        !            59:        typedef IODevice inherited;
        !            60: 
        !            61:        static const int baseaddr = 0xe84000;
        !            62: 
        !            63:  public:
        !            64:        DMACDevice();
        !            65:        virtual ~DMACDevice();
        !            66: 
        !            67:        virtual uint64 Read8(uint32 addr);
        !            68:        virtual uint64 Write8(uint32 addr, uint32 data);
        !            69:        virtual uint64 Peek8(uint32 addr);
        !            70: 
        !            71:  private:
        !            72:        void write_csr(int ch, uint32 data);
        !            73:        void write_ccr(int ch, uint32 data);
        !            74: 
        !            75:        struct DMAC dmac {};
        !            76: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.