Annotation of nono/m680x0/m68030cache.h, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2023 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: // キャッシュ
                      8: 
                      9: #pragma once
                     10: 
                     11: #include "m68030.h"
                     12: 
                     13: // キャッシュライン
                     14: struct m68030CacheLine
                     15: {
                     16:        // タグは命令キャッシュ/データキャッシュで共通だが、
                     17:        // 命令キャッシュなら下位1ビットが S (FC2)、
                     18:        // データキャッシュなら下位3ビットが FC1,FC0,FC2 の順。
                     19:        //    3                   2                   1
                     20:        //  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
                     21:        // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     22:        // |                 Tag Address (24bit)           |             |S| (Inst)
                     23:        // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     24:        //
                     25:        // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     26:        // |                 Tag Address (24bit)           |         |1|0|S| (Data)
                     27:        // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     28:        uint32 tag {};
                     29: 
                     30:        std::array<uint32, 4> data {};
                     31:        union {
                     32:                uint32 valid_all {};
                     33:                uint8 valid[4];
                     34:        };
                     35: 
                     36:        bool IsSuper() const    { return (tag & 1); }
                     37:        uint32 TagAddr() const  { return (tag & 0xffffff00); }
                     38: };
                     39: 
                     40: // キャッシュ (命令/データ共通)
                     41: class m68030Cache
                     42: {
                     43:  public:
                     44:        std::array<m68030CacheLine, 16> line {};
                     45: };

unix.superglobalmegacorp.com

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