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

Location:
trunk/modules/vci_mem_cache_v3/caba/source
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_mem_cache_v3/caba/source/include/vci_mem_cache_v3.h

    r2 r82  
    6161#define TRANSACTION_TAB_LINES 4     // Number of lines in the transaction tab
    6262#define UPDATE_TAB_LINES 4          // Number of lines in the update tab
    63 #define BROADCAST_ADDR 0x0000000003 // Address to send the broadcast invalidate
    6463
    6564namespace soclib {  namespace caba {
     
    362361      const soclib::common::AddressMaskingTable<vci_addr_t>   m_nline;
    363362
     363      // broadcast address
     364      vci_addr_t broadcast_addr;
     365
    364366      //////////////////////////////////////////////////
    365367      // Others registers
  • trunk/modules/vci_mem_cache_v3/caba/source/src/vci_mem_cache_v3.cpp

    r57 r82  
    325325      assert(nways <= 32);
    326326
     327      // Set the broadcast address with Xmin,Xmax,Ymin,Ymax set to maximum
     328      broadcast_addr = 0x3 | (0x7C1F << (vci_param::N-20));
    327329
    328330      // Get the segments associated to the MemCache
     
    23582360            }
    23592361            if ( (p_vci_tgt_cleanup.cmd.read() == vci_param::CMD_WRITE) &&
    2360                 (((addr_t)(p_vci_tgt_cleanup.address.read())) != BROADCAST_ADDR) &&
     2362                (((addr_t)(p_vci_tgt_cleanup.address.read())&0x3) != 0x3) &&
    23612363                reached) {
    23622364
     
    43374339        p_vci_tgt.rtrdid   = r_write_to_tgt_rsp_trdid.read();
    43384340        p_vci_tgt.rpktid   = r_write_to_tgt_rsp_pktid.read();
    4339         p_vci_tgt.rerror   = 0;
     4341        p_vci_tgt.rerror   = 0x2 & ( (1 << (vci_param::E + 1)) - 1); // Write OK
    43404342        p_vci_tgt.reop     = true;
    43414343        break;
     
    44214423      case INIT_CMD_XRAM_BRDCAST:
    44224424        p_vci_ini.cmdval  = true;
    4423         p_vci_ini.address = BROADCAST_ADDR;
     4425        p_vci_ini.address = broadcast_addr;
    44244426        p_vci_ini.wdata   = (uint32_t)r_xram_rsp_to_init_cmd_nline.read();
    44254427        p_vci_ini.be      = ((r_xram_rsp_to_init_cmd_nline.read() >> 32) & 0x3);
     
    44314433      case INIT_CMD_WRITE_BRDCAST:
    44324434        p_vci_ini.cmdval  = true;
    4433         p_vci_ini.address = BROADCAST_ADDR;
     4435        p_vci_ini.address = broadcast_addr;
    44344436        p_vci_ini.wdata   = (addr_t)r_write_to_init_cmd_nline.read();
    44354437        p_vci_ini.be      = ((r_write_to_init_cmd_nline.read() >> 32) & 0x3);
     
    44764478      case INIT_CMD_SC_BRDCAST:
    44774479        p_vci_ini.cmdval  = true;
    4478         p_vci_ini.address = BROADCAST_ADDR;
     4480        p_vci_ini.address = broadcast_addr;
    44794481        p_vci_ini.wdata   = (addr_t)r_llsc_to_init_cmd_nline.read();
    44804482        p_vci_ini.be      = ((r_llsc_to_init_cmd_nline.read() >> 32) & 0x3);
     
    45494551          p_vci_tgt_cleanup.rpktid = r_cleanup_pktid.read();
    45504552          p_vci_tgt_cleanup.rtrdid = r_cleanup_trdid.read();
    4551           p_vci_tgt_cleanup.rerror = 0;
     4553          p_vci_tgt_cleanup.rerror = 0x2 & ( (1 << (vci_param::E + 1)) - 1);
    45524554          p_vci_tgt_cleanup.reop   = 1;
    45534555          break;
Note: See TracChangeset for help on using the changeset viewer.