1/* 2 * Copyright (c) 2012-2015 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 290 unchanged lines hidden (view full) --- 299 * The original value of the command field. Only valid when the 300 * current command field is an error condition; in that case, the 301 * previous contents of the command field are copied here. This 302 * field is *not* set on non-error responses. 303 */ 304 MemCmd origCmd; 305 306 /** |
307 * Track the bytes found that satisfy a functional read. |
308 */ |
309 std::vector<bool> bytesValid; |
310 311 public: 312 313 /** 314 * The extra delay from seeing the packet until the header is 315 * transmitted. This delay is used to communicate the crossbar 316 * forwarding latency to the neighbouring object (e.g. a cache) 317 * that actually makes the packet wait. As the delay is relative, --- 248 unchanged lines hidden (view full) --- 566 567 /** 568 * Constructor. Note that a Request object must be constructed 569 * first, but the Requests's physical address and size fields need 570 * not be valid. The command must be supplied. 571 */ 572 Packet(const RequestPtr _req, MemCmd _cmd) 573 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), |
574 size(0), headerDelay(0), payloadDelay(0), |
575 senderState(NULL) 576 { 577 if (req->hasPaddr()) { 578 addr = req->getPaddr(); 579 flags.set(VALID_ADDR); 580 _isSecure = req->isSecure(); 581 } 582 if (req->hasSize()) { --- 4 unchanged lines hidden (view full) --- 587 588 /** 589 * Alternate constructor if you are trying to create a packet with 590 * a request that is for a whole block, not the address from the 591 * req. this allows for overriding the size/addr of the req. 592 */ 593 Packet(const RequestPtr _req, MemCmd _cmd, int _blkSize) 594 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), |
595 headerDelay(0), payloadDelay(0), 596 senderState(NULL) 597 { 598 if (req->hasPaddr()) { 599 addr = req->getPaddr() & ~(_blkSize - 1); 600 flags.set(VALID_ADDR); 601 _isSecure = req->isSecure(); 602 } --- 7 unchanged lines hidden (view full) --- 610 * that, as we can't guarantee that the new packet's lifetime is 611 * less than that of the original packet. In this case the new 612 * packet should allocate its own data. 613 */ 614 Packet(PacketPtr pkt, bool clear_flags, bool alloc_data) 615 : cmd(pkt->cmd), req(pkt->req), 616 data(nullptr), 617 addr(pkt->addr), _isSecure(pkt->_isSecure), size(pkt->size), |
618 bytesValid(pkt->bytesValid), |
619 headerDelay(pkt->headerDelay), 620 payloadDelay(pkt->payloadDelay), 621 senderState(pkt->senderState) 622 { 623 if (!clear_flags) 624 flags.set(pkt->flags & COPY_FLAGS); 625 626 flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE)); --- 346 unchanged lines hidden --- |