Annotation of nono/vm/dmac.h, revision 1.1.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.