Ignore:
Timestamp:
Sep 14, 2013, 4:13:23 PM (11 years ago)
Author:
cfuguet
Message:

The last commit to solve the bug in the SW access
to the LLSC table was imcomplete.

In the SW method the increment of the address to
check the [min, max] interval must be 4 (cell_size),
as the addresses stored in the table are byte
addresses.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp

    r523 r524  
    27522752
    27532753                            if (not sc_success) r_write_fsm = WRITE_RSP;
    2754                             else               r_write_fsm = WRITE_DIR_LOCK;
     2754                            else                r_write_fsm = WRITE_DIR_LOCK;
    27552755                        }
    27562756                        else
    27572757                        {
    27582758                            // We enter here if it is a SW command or an already tested SC command
     2759#define L2 soclib::common::uint32_log2
    27592760                            addr_t min = r_write_address.read();
    2760                             addr_t max = r_write_address.read() + r_write_word_count.read() - 1;
     2761                            addr_t max = r_write_address.read() +
     2762                                       ((r_write_word_count.read()-1) << L2(vci_param_int::B));
     2763#undef L2
    27612764
    27622765                            m_llsc_table.sw(min, max);
Note: See TracChangeset for help on using the changeset viewer.