Annotation of nono/vm/mpu.h, revision 1.1.1.2

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2017 [email protected]
                      4: //
                      5: 
1.1.1.2 ! root        6: // MPU 共通部
        !             7: 
1.1       root        8: #pragma once
                      9: 
                     10: #include "device.h"
                     11: 
                     12: class MPUDevice : public Device
                     13: {
                     14:        typedef Device inherited;
                     15:  public:
1.1.1.2 ! root       16:        MPUDevice();
1.1       root       17:        virtual ~MPUDevice();
                     18: 
                     19:        // MPU を request サイクル分実行する
1.1.1.2 ! root       20:        virtual uint32 Run(uint64 request) = 0;
1.1       root       21: 
1.1.1.2 ! root       22:        // 基準サイクル数を取得
        !            23:        virtual uint64 total_cycle() const = 0;
1.1       root       24: 
                     25:        // MPU の処理をこの命令で中断させる。
                     26:        // スケジューラのイベントリストに追加が発生した時に VM 側から
                     27:        // MPU へ処理の中断を指示する。
1.1.1.2 ! root       28:        virtual void Release() = 0;
1.1       root       29: 
1.1.1.2 ! root       30:        // 現在実行中の命令の PC を取得
        !            31:        virtual uint32 GetPPC() const = 0;
1.1       root       32: 
1.1.1.2 ! root       33:        // 現在アクセス中の論理アドレス、物理アドレスを取得。
        !            34:        // Laddr == Paddr が MMU オフなのか PA=VA で運用中なのかの区別は
        !            35:        // ここでは付かない。
        !            36:        virtual uint32 GetLaddr() const = 0;
        !            37:        virtual uint32 GetPaddr() const = 0;
1.1       root       38: 
1.1.1.2 ! root       39:        // 割り込み発生を MPU に通知 (オートベクタ)
        !            40:        virtual void Interrupt(int level) = 0;
1.1       root       41: };
                     42: 
1.1.1.2 ! root       43: #include "mpu680x0.h"
        !            44: #include "mpu88xx0.h"
1.1       root       45: 
1.1.1.2 ! root       46: extern std::unique_ptr<MPUDevice> gMPU;

unix.superglobalmegacorp.com

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