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; --- 12 unchanged lines hidden (view full) --- 21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 |
29#include "arch/x86/ldstflags.hh" |
30#include "base/misc.hh" 31#include "base/str.hh" |
32#include "cpu/testers/rubytest/RubyTester.hh" 33#include "debug/MemoryAccess.hh" 34#include "debug/ProtocolTrace.hh" 35#include "debug/RubySequencer.hh" 36#include "debug/RubyStats.hh" 37#include "mem/protocol/PrefetchBit.hh" 38#include "mem/protocol/RubyAccessMode.hh" 39#include "mem/ruby/common/Global.hh" 40#include "mem/ruby/profiler/Profiler.hh" 41#include "mem/ruby/slicc_interface/RubyRequest.hh" 42#include "mem/ruby/system/Sequencer.hh" 43#include "mem/ruby/system/System.hh" 44#include "mem/packet.hh" |
45#include "sim/system.hh" |
46 47using namespace std; 48 49Sequencer * 50RubySequencerParams::create() 51{ 52 return new Sequencer(this); 53} --- 569 unchanged lines hidden (view full) --- 623 primary_type = RubyRequestType_Locked_RMW_Read; 624 } 625 secondary_type = RubyRequestType_ST; 626 } else { 627 if (pkt->isRead()) { 628 if (pkt->req->isInstFetch()) { 629 primary_type = secondary_type = RubyRequestType_IFETCH; 630 } else { |
631 bool storeCheck = false; |
632 // only X86 need the store check 633 if (system->getArch() == Arch::X86ISA) { 634 uint32_t flags = pkt->req->getFlags(); 635 storeCheck = flags & 636 (X86ISA::StoreCheck << X86ISA::FlagShift); 637 } |
638 if (storeCheck) { 639 primary_type = RubyRequestType_RMW_Read; 640 secondary_type = RubyRequestType_ST; 641 } else { 642 primary_type = secondary_type = RubyRequestType_LD; 643 } 644 } 645 } else if (pkt->isWrite()) { --- 182 unchanged lines hidden --- |