Sep 14, 2013, 1:06:56 PM (11 years ago)

Bugfix in GenericLLSCGlobal table and vci_mem_cache:

  • Two bugs have been fixed in this commit:

The first one is in the Generic LLSC global table. The method SW
does not shift the NLINE during the concatenation with the word

The second one is during the call of this function (SW) in the WRITE
FSM. The max word index passed as argument was incorrectly always over

incremented by one.

To solve this problem, the SW function has been changed. It does not

accept anymore the nline, min and max arguments but two complete
addresses (address min and address max). This way, it is avoided the
add of a new NWORDS argument to the table which would be needed to
shift the NLINE.

1 edited


  • trunk/lib/generic_llsc_global_table/include/generic_llsc_global_table.h

    r514 r523  
    453453    }
    454454    */
    455     inline void sw(const addr_t nline, unsigned int min, unsigned int max)
     455    inline void sw(const addr_t ad_min, const addr_t ad_max)
    456456    //  This method checks if there is / are valid registration(s) for the given
    457457    //  range and, in case of hit(s), invalidates the registration(s)
    467467        // for every address in the given range ...
    468         for (unsigned int i = min; i <= max; i++)
     468        for (addr_t i = ad_min; i <= ad_max; i++)
    469469        {
    470470            //  Is there a registration for the given address ?
    471             int pos = hitAddr(nline + i * 4);
     471            int pos = hitAddr(i);
    472473            //  If there is one, invalidate it
    473474            if (pos >= 0)
Note: See TracChangeset for help on using the changeset viewer.