lsq_unit.hh (10333:6be8945d226b) lsq_unit.hh (10342:711eb0e64249)
1/*
2 * Copyright (c) 2012-2014 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

--- 762 unchanged lines hidden (view full) ---

771 if (!load_inst->memData) {
772 load_inst->memData = new uint8_t[req->getSize()];
773 }
774
775 ++usedPorts;
776
777 // if we the cache is not blocked, do cache access
778 bool completedFirst = false;
1/*
2 * Copyright (c) 2012-2014 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

--- 762 unchanged lines hidden (view full) ---

771 if (!load_inst->memData) {
772 load_inst->memData = new uint8_t[req->getSize()];
773 }
774
775 ++usedPorts;
776
777 // if we the cache is not blocked, do cache access
778 bool completedFirst = false;
779 MemCmd command = req->isLLSC() ? MemCmd::LoadLockedReq : MemCmd::ReadReq;
780 PacketPtr data_pkt = new Packet(req, command);
779 PacketPtr data_pkt = Packet::createRead(req);
781 PacketPtr fst_data_pkt = NULL;
782 PacketPtr snd_data_pkt = NULL;
783
784 data_pkt->dataStatic(load_inst->memData);
785
786 LSQSenderState *state = new LSQSenderState;
787 state->isLoad = true;
788 state->idx = load_idx;
789 state->inst = load_inst;
790 data_pkt->senderState = state;
791
792 if (!TheISA::HasUnalignedMemAcc || !sreqLow) {
793 // Point the first packet at the main data packet.
794 fst_data_pkt = data_pkt;
795 } else {
796 // Create the split packets.
780 PacketPtr fst_data_pkt = NULL;
781 PacketPtr snd_data_pkt = NULL;
782
783 data_pkt->dataStatic(load_inst->memData);
784
785 LSQSenderState *state = new LSQSenderState;
786 state->isLoad = true;
787 state->idx = load_idx;
788 state->inst = load_inst;
789 data_pkt->senderState = state;
790
791 if (!TheISA::HasUnalignedMemAcc || !sreqLow) {
792 // Point the first packet at the main data packet.
793 fst_data_pkt = data_pkt;
794 } else {
795 // Create the split packets.
797 fst_data_pkt = new Packet(sreqLow, command);
798 snd_data_pkt = new Packet(sreqHigh, command);
796 fst_data_pkt = Packet::createRead(sreqLow);
797 snd_data_pkt = Packet::createRead(sreqHigh);
799
800 fst_data_pkt->dataStatic(load_inst->memData);
801 snd_data_pkt->dataStatic(load_inst->memData + sreqLow->getSize());
802
803 fst_data_pkt->senderState = state;
804 snd_data_pkt->senderState = state;
805
806 state->isSplit = true;

--- 105 unchanged lines hidden ---
798
799 fst_data_pkt->dataStatic(load_inst->memData);
800 snd_data_pkt->dataStatic(load_inst->memData + sreqLow->getSize());
801
802 fst_data_pkt->senderState = state;
803 snd_data_pkt->senderState = state;
804
805 state->isSplit = true;

--- 105 unchanged lines hidden ---