Ignore:
Timestamp:
Sep 2, 2010, 2:22:12 PM (14 years ago)
Author:
guthmull
Message:

Add broadcast limitation compatibility, indicate the type of response when possible

File:
1 edited

Legend:

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

    r58 r82  
    432432
    433433                    // multi-update or multi-invalidate for data type
    434                     if ( (address != 0x3) && (! m_segment.contains(address)) )
     434                    if ( ((address&0x3) != 0x3) && (! m_segment.contains(address)) )
    435435                    {
    436436                        std::cout << "error in component VCI_CC_XCACHE_WRAPPER " << name() << std::endl;
     
    446446                    r_tgt_plen  = p_vci_tgt.plen.read();
    447447                   
    448                     if ( address == 0x3 )   // broadcast invalidate for data or instruction type
     448                    if ( (address&0x3) == 0x3 )   // broadcast invalidate for data or instruction type
    449449                    {
    450450                        if ( ! p_vci_tgt.eop.read() )
     
    15581558                    r_vci_rsp_fsm = RSP_IDLE;
    15591559                }
    1560                 if ( p_vci_ini_rw.rerror.read() != vci_param::ERR_NORMAL ) r_vci_rsp_ins_error = true;
     1560                if ( (p_vci_ini_rw.rerror.read()&0x1) != vci_param::ERR_NORMAL ) r_vci_rsp_ins_error = true;
    15611561                break;
    15621562
     
    15701570                r_vci_rsp_fsm = RSP_IDLE;
    15711571                r_icache_unc_req = false;
    1572                 if ( p_vci_ini_rw.rerror.read() != vci_param::ERR_NORMAL ) r_vci_rsp_ins_error = true;
     1572                if ( (p_vci_ini_rw.rerror.read()&0x1) != vci_param::ERR_NORMAL ) r_vci_rsp_ins_error = true;
    15731573                break;
    15741574
     
    15871587                    r_vci_rsp_fsm = RSP_IDLE;
    15881588                }
    1589                 if ( p_vci_ini_rw.rerror.read() != vci_param::ERR_NORMAL ) r_vci_rsp_data_error = true;
     1589                if ( (p_vci_ini_rw.rerror.read()&0x1) != vci_param::ERR_NORMAL ) r_vci_rsp_data_error = true;
    15901590                break;
    15911591
     
    15981598                    r_dcache_write_req = false;
    15991599                }
    1600                 if ( p_vci_ini_rw.rerror.read() != vci_param::ERR_NORMAL ) m_iss.setWriteBerr();
     1600                if ( (p_vci_ini_rw.rerror.read()&0x1) != vci_param::ERR_NORMAL ) m_iss.setWriteBerr();
    16011601                break;
    16021602
     
    16101610                r_vci_rsp_fsm = RSP_IDLE;
    16111611                r_dcache_unc_req = false;
    1612                 if ( p_vci_ini_rw.rerror.read() != vci_param::ERR_NORMAL ) r_vci_rsp_data_error = true;
     1612                if ( (p_vci_ini_rw.rerror.read()&0x1) != vci_param::ERR_NORMAL ) r_vci_rsp_data_error = true;
    16131613                break;
    16141614
     
    16221622                r_vci_rsp_fsm = RSP_IDLE;
    16231623                r_dcache_sc_req = false;
    1624                 if ( p_vci_ini_rw.rerror.read() != vci_param::ERR_NORMAL ) r_vci_rsp_data_error = true;
     1624                if ( (p_vci_ini_rw.rerror.read()&0x1) != vci_param::ERR_NORMAL ) r_vci_rsp_data_error = true;
    16251625                break;
    16261626
     
    16311631                assert( p_vci_ini_c.reop.read() &&
    16321632                        "illegal VCI response packet for icache cleanup");
    1633                 assert( (p_vci_ini_c.rerror.read() == vci_param::ERR_NORMAL) &&
     1633                assert( ((p_vci_ini_c.rerror.read()&0x1) == vci_param::ERR_NORMAL) &&
    16341634                        "error in response packet for icache cleanup");
    16351635                if ( r_vci_rsp_fsm == RSP_INS_CLEANUP ) r_icache_cleanup_req = false;
     
    20112011                p_vci_tgt.rtrdid  = r_tgt_trdid.read();
    20122012                p_vci_tgt.rdata   = 0;
    2013                 p_vci_tgt.rerror  = 0;
     2013                p_vci_tgt.rerror  = 0x2 & ( (1 << (vci_param::E + 1)) - 1); // Write OK
    20142014                p_vci_tgt.reop    = true;
    20152015                break;
     
    20222022                p_vci_tgt.rtrdid  = r_tgt_trdid.read();
    20232023                p_vci_tgt.rdata   = 0;
    2024                 p_vci_tgt.rerror  = 0;
     2024                p_vci_tgt.rerror  = 0x2 & ( (1 << (vci_param::E + 1)) - 1); // Write OK
    20252025                p_vci_tgt.reop    = true;
    20262026                break;
     
    20332033                p_vci_tgt.rtrdid  = r_tgt_trdid.read();
    20342034                p_vci_tgt.rdata   = 0;
    2035                 p_vci_tgt.rerror  = 0;
     2035                p_vci_tgt.rerror  = 0x2 & ( (1 << (vci_param::E + 1)) - 1); // Write OK
    20362036                p_vci_tgt.reop    = true;
    20372037                break;
Note: See TracChangeset for help on using the changeset viewer.