Ignore:
Timestamp:
Oct 9, 2013, 9:32:41 AM (11 years ago)
Author:
meunier
Message:
  • Added a syscall and some user functions to manipulate the Simulation Helper
  • Changed the the way the Vseg -> Pseg mapping is made during the boot to better utilize the address space (+ adaptation of the algorithm in memo)
  • Fixed a bug in boot_init (vobj_init): the vobj initialization could only be made for the first application (ptpr was not changed)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/memo/include/pseg.h

    r238 r255  
    5858public:
    5959
     60    int32_t     m_align;    // alignment of the first vobj
    6061    bool        m_ident;    // identity mapping required if true
    6162
     
    6667    size_t length() const;
    6768    size_t type() const;
    68     //void add( VObj& vobj );//add a VObj
    6969
    70     void print( std::ostream &o ) const;
     70    void print(std::ostream &o) const;
    7171    friend std::ostream &operator<<( std::ostream &o, const VSeg &s )
    7272    {
     
    7575    }
    7676
    77     VSeg& operator=( const VSeg &ref );
     77    VSeg& operator=(const VSeg &ref);
    7878
    7979    VSeg();
    80     VSeg( const VSeg &ref );
     80    VSeg(const VSeg &ref);
    8181    VSeg(std::string&   binaryName,
    8282         std::string&   name,
     
    9797    size_t        m_type;
    9898
    99     paddr_t       m_pageLimit;  // m_lma + m_length aligned on page size
    100     paddr_t       m_nextLma;    // next free base
    101    
    102     void confNextLma();         // check m_nextLma is whithin the seg limits
     99    static size_t m_pageSize;
    103100
    104101public:
     
    106103    std::vector<VSeg> m_vsegs;
    107104
    108     paddr_t     m_limit;        // m_lma + m_length
    109 
    110105    const std::string& name() const;
    111106    paddr_t lma() const;
    112107    paddr_t length() const;
    113108    size_t type() const;
    114     paddr_t limit() const;
    115     paddr_t nextLma() const;
    116109
    117110    void check() const;
    118111
    119112    void setName(std::string& name);
    120     void setLma( paddr_t lma);
     113    void setLma(paddr_t lma);
    121114    void setLength(paddr_t length);
    122115
    123     static paddr_t align( paddr_t toAlign, unsigned alignPow2);
    124     static paddr_t pageAlign( paddr_t toAlign );
     116    static paddr_t align(paddr_t toAlign, unsigned alignPow2);
     117    static paddr_t pageAlign(paddr_t toAlign);
    125118
    126     static void setPageSize(size_t pg);
     119    static void setPageSize(size_t pg) {
     120       m_pageSize = pg;
     121    }
     122    static size_t pageSize() {
     123       return m_pageSize;
     124    }
    127125
    128     static size_t& pageSize();
     126    void add(VSeg& vseg);    //add a VSeg
     127    void addIdent(VSeg& vseg);
    129128
    130     void add( VSeg& vseg );    //add a VSeg
    131     void addIdent( VSeg& vseg );
    132129
    133     void setNextLma( paddr_t nextLma);
    134     void incNextLma( size_t inc);
     130    void print(std::ostream &o) const;
    135131
    136     void print( std::ostream &o ) const;
    137 
    138     friend std::ostream &operator<<( std::ostream &o, const PSeg &s )
     132    friend std::ostream &operator<<(std::ostream &o, const PSeg &s )
    139133    {
    140134        s.print(o);
    141135        return o;
    142136    }
    143     PSeg & operator=( const PSeg &ref );
     137    PSeg & operator=(const PSeg &ref);
    144138
    145139    PSeg();
    146     PSeg( const PSeg &ref );
    147     PSeg( const std::string &name);
    148     PSeg( const paddr_t lma);
    149     PSeg( const std::string &name,
    150           paddr_t lma,
    151           paddr_t length,
    152           size_t type);
     140    PSeg(const PSeg &ref );
     141    PSeg(const std::string &name);
     142    PSeg(const std::string &name,
     143         paddr_t lma,
     144         paddr_t length,
     145         size_t type);
    153146    ~PSeg();
    154147};
Note: See TracChangeset for help on using the changeset viewer.