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