packet.hh (10694:1a6785e37d81) | packet.hh (10723:b1d90d88420e) |
---|---|
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 /** | 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 * These values specify the range of bytes found that satisfy a 308 * functional read. | 307 * Track the bytes found that satisfy a functional read. |
309 */ | 308 */ |
310 uint16_t bytesValidStart; 311 uint16_t bytesValidEnd; | 309 std::vector<bool> bytesValid; |
312 313 public: 314 315 /** 316 * The extra delay from seeing the packet until the header is 317 * transmitted. This delay is used to communicate the crossbar 318 * forwarding latency to the neighbouring object (e.g. a cache) 319 * that actually makes the packet wait. As the delay is relative, --- 248 unchanged lines hidden (view full) --- 568 569 /** 570 * Constructor. Note that a Request object must be constructed 571 * first, but the Requests's physical address and size fields need 572 * not be valid. The command must be supplied. 573 */ 574 Packet(const RequestPtr _req, MemCmd _cmd) 575 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), | 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), |
576 size(0), bytesValidStart(0), bytesValidEnd(0), 577 headerDelay(0), payloadDelay(0), | 574 size(0), headerDelay(0), payloadDelay(0), |
578 senderState(NULL) 579 { 580 if (req->hasPaddr()) { 581 addr = req->getPaddr(); 582 flags.set(VALID_ADDR); 583 _isSecure = req->isSecure(); 584 } 585 if (req->hasSize()) { --- 4 unchanged lines hidden (view full) --- 590 591 /** 592 * Alternate constructor if you are trying to create a packet with 593 * a request that is for a whole block, not the address from the 594 * req. this allows for overriding the size/addr of the req. 595 */ 596 Packet(const RequestPtr _req, MemCmd _cmd, int _blkSize) 597 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), | 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), |
598 bytesValidStart(0), bytesValidEnd(0), | |
599 headerDelay(0), payloadDelay(0), 600 senderState(NULL) 601 { 602 if (req->hasPaddr()) { 603 addr = req->getPaddr() & ~(_blkSize - 1); 604 flags.set(VALID_ADDR); 605 _isSecure = req->isSecure(); 606 } --- 7 unchanged lines hidden (view full) --- 614 * that, as we can't guarantee that the new packet's lifetime is 615 * less than that of the original packet. In this case the new 616 * packet should allocate its own data. 617 */ 618 Packet(PacketPtr pkt, bool clear_flags, bool alloc_data) 619 : cmd(pkt->cmd), req(pkt->req), 620 data(nullptr), 621 addr(pkt->addr), _isSecure(pkt->_isSecure), size(pkt->size), | 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), |
622 bytesValidStart(pkt->bytesValidStart), 623 bytesValidEnd(pkt->bytesValidEnd), | 618 bytesValid(pkt->bytesValid), |
624 headerDelay(pkt->headerDelay), 625 payloadDelay(pkt->payloadDelay), 626 senderState(pkt->senderState) 627 { 628 if (!clear_flags) 629 flags.set(pkt->flags & COPY_FLAGS); 630 631 flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE)); --- 346 unchanged lines hidden --- | 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 --- |