Sequencer.cc (10472:399f35ed5cca) Sequencer.cc (10562:b99fdc295c34)
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

519 initialRequestTime, forwardRequestTime,
520 firstResponseTime, curCycle());
521
522 DPRINTFR(ProtocolTrace, "%15s %3s %10s%20s %6s>%-6s %s %d cycles\n",
523 curTick(), m_version, "Seq",
524 llscSuccess ? "Done" : "SC_Failed", "", "",
525 request_address, total_latency);
526
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

519 initialRequestTime, forwardRequestTime,
520 firstResponseTime, curCycle());
521
522 DPRINTFR(ProtocolTrace, "%15s %3s %10s%20s %6s>%-6s %s %d cycles\n",
523 curTick(), m_version, "Seq",
524 llscSuccess ? "Done" : "SC_Failed", "", "",
525 request_address, total_latency);
526
527 // update the data
527 // update the data unless it is a non-data-carrying flush
528 if (g_system_ptr->m_warmup_enabled) {
528 if (g_system_ptr->m_warmup_enabled) {
529 assert(pkt->getPtr<uint8_t>(false) != NULL);
530 data.setData(pkt->getPtr<uint8_t>(false),
529 data.setData(pkt->getPtr<uint8_t>(),
531 request_address.getOffset(), pkt->getSize());
530 request_address.getOffset(), pkt->getSize());
532 } else if (pkt->getPtr<uint8_t>(true) != NULL) {
531 } else if (!pkt->isFlush()) {
533 if ((type == RubyRequestType_LD) ||
534 (type == RubyRequestType_IFETCH) ||
535 (type == RubyRequestType_RMW_Read) ||
536 (type == RubyRequestType_Locked_RMW_Read) ||
537 (type == RubyRequestType_Load_Linked)) {
532 if ((type == RubyRequestType_LD) ||
533 (type == RubyRequestType_IFETCH) ||
534 (type == RubyRequestType_RMW_Read) ||
535 (type == RubyRequestType_Locked_RMW_Read) ||
536 (type == RubyRequestType_Load_Linked)) {
538 memcpy(pkt->getPtr<uint8_t>(true),
537 memcpy(pkt->getPtr(),
539 data.getData(request_address.getOffset(), pkt->getSize()),
540 pkt->getSize());
541 } else {
538 data.getData(request_address.getOffset(), pkt->getSize()),
539 pkt->getSize());
540 } else {
542 data.setData(pkt->getPtr<uint8_t>(true),
541 data.setData(pkt->getPtr(),
543 request_address.getOffset(), pkt->getSize());
544 }
542 request_address.getOffset(), pkt->getSize());
543 }
545 } else {
546 DPRINTF(MemoryAccess,
547 "WARNING. Data not transfered from Ruby to M5 for type %s\n",
548 RubyRequestType_to_string(type));
549 }
550
551 // If using the RubyTester, update the RubyTester sender state's
552 // subBlock with the recieved data. The tester will later access
553 // this state.
554 if (m_usingRubyTester) {
555 RubyTester::SenderState* testerSenderState =
556 pkt->findNextSenderState<RubyTester::SenderState>();

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

674 }
675
676 // If valid, copy the pc to the ruby request
677 Addr pc = 0;
678 if (pkt->req->hasPC()) {
679 pc = pkt->req->getPC();
680 }
681
544 }
545
546 // If using the RubyTester, update the RubyTester sender state's
547 // subBlock with the recieved data. The tester will later access
548 // this state.
549 if (m_usingRubyTester) {
550 RubyTester::SenderState* testerSenderState =
551 pkt->findNextSenderState<RubyTester::SenderState>();

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

669 }
670
671 // If valid, copy the pc to the ruby request
672 Addr pc = 0;
673 if (pkt->req->hasPC()) {
674 pc = pkt->req->getPC();
675 }
676
677 // check if the packet has data as for example prefetch and flush
678 // requests do not
682 std::shared_ptr<RubyRequest> msg =
683 std::make_shared<RubyRequest>(clockEdge(), pkt->getAddr(),
679 std::shared_ptr<RubyRequest> msg =
680 std::make_shared<RubyRequest>(clockEdge(), pkt->getAddr(),
684 pkt->getPtr<uint8_t>(true),
681 pkt->isFlush() ?
682 nullptr : pkt->getPtr<uint8_t>(),
685 pkt->getSize(), pc, secondary_type,
686 RubyAccessMode_Supervisor, pkt,
687 PrefetchBit_No, proc_id);
688
689 DPRINTFR(ProtocolTrace, "%15s %3s %10s%20s %6s>%-6s %s %s\n",
690 curTick(), m_version, "Seq", "Begin", "", "",
691 msg->getPhysicalAddress(),
692 RubyRequestType_to_string(secondary_type));

--- 136 unchanged lines hidden ---
683 pkt->getSize(), pc, secondary_type,
684 RubyAccessMode_Supervisor, pkt,
685 PrefetchBit_No, proc_id);
686
687 DPRINTFR(ProtocolTrace, "%15s %3s %10s%20s %6s>%-6s %s %s\n",
688 curTick(), m_version, "Seq", "Begin", "", "",
689 msg->getPhysicalAddress(),
690 RubyRequestType_to_string(secondary_type));

--- 136 unchanged lines hidden ---