Sequencer.cc (10089:bc3126a05a7f) Sequencer.cc (10467:dcf27c8220ac)
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
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"
29#include "base/misc.hh"
30#include "base/str.hh"
30#include "base/misc.hh"
31#include "base/str.hh"
31#include "config/the_isa.hh"
32#if THE_ISA == X86_ISA
33#include "arch/x86/insts/microldstop.hh"
34#endif // X86_ISA
35#include "cpu/testers/rubytest/RubyTester.hh"
36#include "debug/MemoryAccess.hh"
37#include "debug/ProtocolTrace.hh"
38#include "debug/RubySequencer.hh"
39#include "debug/RubyStats.hh"
40#include "mem/protocol/PrefetchBit.hh"
41#include "mem/protocol/RubyAccessMode.hh"
42#include "mem/ruby/common/Global.hh"
43#include "mem/ruby/profiler/Profiler.hh"
44#include "mem/ruby/slicc_interface/RubyRequest.hh"
45#include "mem/ruby/system/Sequencer.hh"
46#include "mem/ruby/system/System.hh"
47#include "mem/packet.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"
48
49using namespace std;
50
51Sequencer *
52RubySequencerParams::create()
53{
54 return new Sequencer(this);
55}

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

625 primary_type = RubyRequestType_Locked_RMW_Read;
626 }
627 secondary_type = RubyRequestType_ST;
628 } else {
629 if (pkt->isRead()) {
630 if (pkt->req->isInstFetch()) {
631 primary_type = secondary_type = RubyRequestType_IFETCH;
632 } else {
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 {
633#if THE_ISA == X86_ISA
634 uint32_t flags = pkt->req->getFlags();
635 bool storeCheck = flags &
636 (TheISA::StoreCheck << TheISA::FlagShift);
637#else
638 bool storeCheck = false;
631 bool storeCheck = false;
639#endif // X86_ISA
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 }
640 if (storeCheck) {
641 primary_type = RubyRequestType_RMW_Read;
642 secondary_type = RubyRequestType_ST;
643 } else {
644 primary_type = secondary_type = RubyRequestType_LD;
645 }
646 }
647 } else if (pkt->isWrite()) {

--- 182 unchanged lines hidden ---
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 ---