Ignore:
Timestamp:
Sep 14, 2013, 1:06:56 PM (11 years ago)
Author:
cfuguet
Message:

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
index.

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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)
     
    466466
    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);
     472
    472473            //  If there is one, invalidate it
    473474            if (pos >= 0)
Note: See TracChangeset for help on using the changeset viewer.