31a32
> m_data_block_mask = ~ (~0 << RubySystem::getBlockSizeBits());
49,52c50
< case RubyRequestType_Locked_Read:
< case RubyRequestType_Locked_Write:
< case RubyRequestType_RMW_Read:
< case RubyRequestType_RMW_Write:
---
> case RubyRequestType_RMW:
56c54
< assert(!m_is_busy);
---
> assert(!m_is_busy); // only support one outstanding DMA request
68a67
> msg.getLineAddress() = line_address(msg.getPhysicalAddress());
70,72c69,71
< msg.getOffset() = paddr & RubyConfig::dataBlockMask();
< msg.getLen() = (msg.getOffset() + len) < RubySystem::getBlockSizeBytes() ?
< (msg.getOffset() + len) :
---
> msg.getOffset() = paddr & m_data_block_mask;
> msg.getLen() = (msg.getOffset() + len) <= RubySystem::getBlockSizeBytes() ?
> len :
76c75
< msg.getDataBlk().setData(data, 0, msg.getLen());
---
> msg.getDataBlk().setData(data, msg.getOffset(), msg.getLen());
97,98c96,99
< msg.getPhysicalAddress() = Address(active_request.start_paddr + active_request.bytes_completed);
< assert((msg.getPhysicalAddress().getAddress() & RubyConfig::dataBlockMask()) == 0);
---
> msg.getPhysicalAddress() = Address(active_request.start_paddr +
> active_request.bytes_completed);
> assert((msg.getPhysicalAddress().getAddress() & m_data_block_mask) == 0);
> msg.getLineAddress() = line_address(msg.getPhysicalAddress());
100,103c101,106
< msg.getType() = active_request.write ? DMARequestType_WRITE : DMARequestType_READ;
< msg.getLen() = active_request.len - active_request.bytes_completed < RubySystem::getBlockSizeBytes() ?
< active_request.len - active_request.bytes_completed :
< RubySystem::getBlockSizeBytes();
---
> msg.getType() = (active_request.write ? DMARequestType_WRITE :
> DMARequestType_READ);
> msg.getLen() = (active_request.len -
> active_request.bytes_completed < RubySystem::getBlockSizeBytes() ?
> active_request.len - active_request.bytes_completed :
> RubySystem::getBlockSizeBytes());
105c108,109
< msg.getDataBlk().setData(&active_request.data[active_request.bytes_completed], 0, msg.getLen());
---
> msg.getDataBlk().setData(&active_request.data[active_request.bytes_completed],
> 0, msg.getLen());
120,121c124,127
< offset = active_request.start_paddr & RubyConfig::dataBlockMask();
< memcpy(&active_request.data[active_request.bytes_completed], dblk.getData(offset, len), len);
---
> offset = active_request.start_paddr & m_data_block_mask;
> assert( active_request.write == false );
> memcpy(&active_request.data[active_request.bytes_completed],
> dblk.getData(offset, len), len);