Ignore:
Timestamp:
Apr 19, 2015, 5:19:32 PM (10 years ago)
Author:
cfuguet
Message:

bugfix in vci_block_device_tsar:

  • fix: writes on the BUFFER register do not erase the content in the BUFFER_EXT register.
  • fix: mask the current content before writing a new value on the BUFFER and BUFFER_EXT registers.
File:
1 edited

Legend:

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

    r973 r983  
    115115std::cout << "  <BDEV_TGT WRITE_BUFFER> value = " << r_tdata.read() << std::endl;
    116116#endif
    117             r_buf_address = (uint64_t)r_tdata.read();
     117            r_buf_address = (r_buf_address.read() & 0xFFFFFFFF00000000ULL) |
     118                ((uint64_t)r_tdata.read());
    118119            r_target_fsm  = T_IDLE;
    119120        }
     
    128129std::cout << "  <BDEV_TGT WRITE_BUFFER_EXT> value = " << r_tdata.read() << std::endl;
    129130#endif
    130             r_buf_address = r_buf_address.read() + (((uint64_t)r_tdata.read())<<32);
     131            r_buf_address = (r_buf_address.read() & 0x00000000FFFFFFFFULL) |
     132                ((uint64_t)r_tdata.read() << 32);
    131133            r_target_fsm  = T_IDLE;
    132134        }
Note: See TracChangeset for help on using the changeset viewer.