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 ---