diff options
Diffstat (limited to 'src/mem')
26 files changed, 1654 insertions, 1027 deletions
diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh index 0940893bc..80b7c545c 100644 --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -268,8 +268,9 @@ Cache<TagStore>::access(PacketPtr pkt, BlkType *&blk, blk = tags->accessBlock(pkt->getAddr(), lat); - DPRINTF(Cache, "%s %x %s\n", pkt->cmdString(), pkt->getAddr(), - (blk) ? "hit" : "miss"); + DPRINTF(Cache, "%s%s %x %s\n", pkt->cmdString(), + pkt->req->isInstFetch() ? " (ifetch)" : "", + pkt->getAddr(), (blk) ? "hit" : "miss"); if (blk != NULL) { diff --git a/src/mem/physical.cc b/src/mem/physical.cc index 5680fd970..d87ad3b22 100644 --- a/src/mem/physical.cc +++ b/src/mem/physical.cc @@ -211,8 +211,8 @@ PhysicalMemory::checkLockedAddrList(PacketPtr pkt) #define CASE(A, T) \ case sizeof(T): \ - DPRINTF(MemoryAccess, A " of size %i on address 0x%x data 0x%x\n", \ - pkt->getSize(), pkt->getAddr(), pkt->get<T>()); \ + DPRINTF(MemoryAccess,"%s of size %i on address 0x%x data 0x%x\n", \ + A, pkt->getSize(), pkt->getAddr(), pkt->get<T>()); \ break @@ -224,8 +224,8 @@ PhysicalMemory::checkLockedAddrList(PacketPtr pkt) CASE(A, uint16_t); \ CASE(A, uint8_t); \ default: \ - DPRINTF(MemoryAccess, A " of size %i on address 0x%x\n", \ - pkt->getSize(), pkt->getAddr()); \ + DPRINTF(MemoryAccess, "%s of size %i on address 0x%x\n", \ + A, pkt->getSize(), pkt->getAddr()); \ } \ } while (0) @@ -281,6 +281,7 @@ PhysicalMemory::doAtomicAccess(PacketPtr pkt) if (overwrite_mem) std::memcpy(hostAddr, &overwrite_val, pkt->getSize()); + assert(!pkt->req->isInstFetch()); TRACE_PACKET("Read/Write"); } else if (pkt->isRead()) { assert(!pkt->isWrite()); @@ -289,11 +290,12 @@ PhysicalMemory::doAtomicAccess(PacketPtr pkt) } if (pmemAddr) memcpy(pkt->getPtr<uint8_t>(), hostAddr, pkt->getSize()); - TRACE_PACKET("Read"); + TRACE_PACKET(pkt->req->isInstFetch() ? "IFetch" : "Read"); } else if (pkt->isWrite()) { if (writeOK(pkt)) { if (pmemAddr) memcpy(hostAddr, pkt->getPtr<uint8_t>(), pkt->getSize()); + assert(!pkt->req->isInstFetch()); TRACE_PACKET("Write"); } } else if (pkt->isInvalidate()) { diff --git a/src/mem/request.hh b/src/mem/request.hh index 870930317..c8c31ffcd 100644 --- a/src/mem/request.hh +++ b/src/mem/request.hh @@ -132,17 +132,17 @@ class Request : public FastAlloc * The physical address of the request. Valid only if validPaddr * is set. */ - Addr paddr; + Addr _paddr; /** * The size of the request. This field must be set when vaddr or * paddr is written via setVirt() or setPhys(), so it is always * valid as long as one of the address fields is valid. */ - int size; + int _size; /** Flag structure for the request. */ - Flags flags; + Flags _flags; /** Private flags for field validity checking. */ PrivateFlags privateFlags; @@ -155,15 +155,15 @@ class Request : public FastAlloc Tick _time; /** The address space ID. */ - int asid; + int _asid; /** The virtual address of the request. */ - Addr vaddr; + Addr _vaddr; /** * Extra data for the request, such as the return value of * store conditional or the compare value for a CAS. */ - uint64_t extraData; + uint64_t _extraData; /** The context ID (for statistics, typically). */ int _contextId; @@ -171,10 +171,13 @@ class Request : public FastAlloc int _threadId; /** program counter of initiating access; for tracing/debugging */ - Addr pc; + Addr _pc; public: - /** Minimal constructor. No fields are initialized. */ + /** Minimal constructor. No fields are initialized. + * (Note that _flags and privateFlags are cleared by Flags + * default constructor.) + */ Request() {} @@ -218,23 +221,23 @@ class Request : public FastAlloc * allocated Request object. */ void - setPhys(Addr _paddr, int _size, Flags _flags, Tick time) + setPhys(Addr paddr, int size, Flags flags, Tick time) { - assert(_size >= 0); - paddr = _paddr; - size = _size; + assert(size >= 0); + _paddr = paddr; + _size = size; _time = time; - flags.clear(~STICKY_FLAGS); - flags.set(_flags); + _flags.clear(~STICKY_FLAGS); + _flags.set(flags); privateFlags.clear(~STICKY_PRIVATE_FLAGS); privateFlags.set(VALID_PADDR|VALID_SIZE); } void - setPhys(Addr _paddr, int _size, Flags _flags) + setPhys(Addr paddr, int size, Flags flags) { - setPhys(_paddr, _size, _flags, curTick); + setPhys(paddr, size, flags, curTick); } /** @@ -242,18 +245,17 @@ class Request : public FastAlloc * allocated Request object. */ void - setVirt(int _asid, Addr _vaddr, int _size, Flags _flags, Addr _pc) + setVirt(int asid, Addr vaddr, int size, Flags flags, Addr pc) { - assert(_size >= 0); - asid = _asid; - vaddr = _vaddr; - size = _size; - flags = _flags; - pc = _pc; + assert(size >= 0); + _asid = asid; + _vaddr = vaddr; + _size = size; + _pc = pc; _time = curTick; - flags.clear(~STICKY_FLAGS); - flags.set(_flags); + _flags.clear(~STICKY_FLAGS); + _flags.set(flags); privateFlags.clear(~STICKY_PRIVATE_FLAGS); privateFlags.set(VALID_VADDR|VALID_SIZE|VALID_PC); } @@ -265,10 +267,10 @@ class Request : public FastAlloc * to guarantee that the size and flags are also set. */ void - setPaddr(Addr _paddr) + setPaddr(Addr paddr) { assert(privateFlags.isSet(VALID_VADDR)); - paddr = _paddr; + _paddr = paddr; privateFlags.set(VALID_PADDR); } @@ -280,14 +282,14 @@ class Request : public FastAlloc { assert(privateFlags.isSet(VALID_VADDR)); assert(privateFlags.noneSet(VALID_PADDR)); - assert(split_addr > vaddr && split_addr < vaddr + size); + assert(split_addr > _vaddr && split_addr < _vaddr + _size); req1 = new Request; *req1 = *this; req2 = new Request; *req2 = *this; - req1->size = split_addr - vaddr; - req2->vaddr = split_addr; - req2->size = size - req1->size; + req1->_size = split_addr - _vaddr; + req2->_vaddr = split_addr; + req2->_size = _size - req1->_size; } /** @@ -303,7 +305,7 @@ class Request : public FastAlloc getPaddr() { assert(privateFlags.isSet(VALID_PADDR)); - return paddr; + return _paddr; } /** @@ -319,7 +321,7 @@ class Request : public FastAlloc getSize() { assert(privateFlags.isSet(VALID_SIZE)); - return size; + return _size; } /** Accessor for time. */ @@ -342,14 +344,18 @@ class Request : public FastAlloc getFlags() { assert(privateFlags.isSet(VALID_PADDR|VALID_VADDR)); - return flags; + return _flags; } + /** Note that unlike other accessors, this function sets *specific + flags* (ORs them in); it does not assign its argument to the + _flags field. Thus this method should rightly be called + setFlags() and not just flags(). */ void - setFlags(Flags _flags) + setFlags(Flags flags) { assert(privateFlags.isSet(VALID_PADDR|VALID_VADDR)); - flags.set(_flags); + _flags.set(flags); } /** Accessor function for vaddr.*/ @@ -357,7 +363,7 @@ class Request : public FastAlloc getVaddr() { assert(privateFlags.isSet(VALID_VADDR)); - return vaddr; + return _vaddr; } /** Accessor function for asid.*/ @@ -365,7 +371,7 @@ class Request : public FastAlloc getAsid() { assert(privateFlags.isSet(VALID_VADDR)); - return asid; + return _asid; } /** Accessor function for asi.*/ @@ -373,22 +379,7 @@ class Request : public FastAlloc getAsi() { assert(privateFlags.isSet(VALID_VADDR)); - return flags & ASI_BITS; - } - - /** Accessor function for MMAPED_IPR flag. */ - bool - isMmapedIpr() - { - assert(privateFlags.isSet(VALID_PADDR)); - return flags.isSet(MMAPED_IPR); - } - - void - setMmapedIpr(bool r) - { - assert(VALID_VADDR); - flags.set(MMAPED_IPR); + return _flags & ASI_BITS; } /** Accessor function to check if sc result is valid. */ @@ -403,14 +394,14 @@ class Request : public FastAlloc getExtraData() const { assert(privateFlags.isSet(VALID_EXTRA_DATA)); - return extraData; + return _extraData; } /** Accessor function for store conditional return value.*/ void - setExtraData(uint64_t _extraData) + setExtraData(uint64_t extraData) { - extraData = _extraData; + _extraData = extraData; privateFlags.set(VALID_EXTRA_DATA); } @@ -447,31 +438,33 @@ class Request : public FastAlloc getPC() const { assert(privateFlags.isSet(VALID_PC)); - return pc; + return _pc; } - /** Accessor Function to Check Cacheability. */ - bool isUncacheable() const { return flags.isSet(UNCACHEABLE); } - bool isInstFetch() const { return flags.isSet(INST_FETCH); } - bool isPrefetch() const { return flags.isSet(PREFETCH); } - bool isLLSC() const { return flags.isSet(LLSC); } - bool isLocked() const { return flags.isSet(LOCKED); } - bool isSwap() const { return flags.isSet(MEM_SWAP|MEM_SWAP_COND); } - bool isCondSwap() const { return flags.isSet(MEM_SWAP_COND); } + /** Accessor functions for flags. Note that these are for testing + only; setting flags should be done via setFlags(). */ + bool isUncacheable() const { return _flags.isSet(UNCACHEABLE); } + bool isInstFetch() const { return _flags.isSet(INST_FETCH); } + bool isPrefetch() const { return _flags.isSet(PREFETCH); } + bool isLLSC() const { return _flags.isSet(LLSC); } + bool isLocked() const { return _flags.isSet(LOCKED); } + bool isSwap() const { return _flags.isSet(MEM_SWAP|MEM_SWAP_COND); } + bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); } + bool isMmapedIpr() const { return _flags.isSet(MMAPED_IPR); } bool isMisaligned() const { - if (flags.isSet(NO_ALIGN_FAULT)) + if (_flags.isSet(NO_ALIGN_FAULT)) return false; - if ((vaddr & 0x1)) + if ((_vaddr & 0x1)) return true; - if (flags.isSet(NO_HALF_WORD_ALIGN_FAULT)) + if (_flags.isSet(NO_HALF_WORD_ALIGN_FAULT)) return false; - if ((vaddr & 0x2)) + if ((_vaddr & 0x2)) return true; return false; diff --git a/src/mem/ruby/tester/DetermGETXGenerator.cc b/src/mem/ruby/tester/DetermGETXGenerator.cc index 1eb9cb3ee..934b6d4e5 100644 --- a/src/mem/ruby/tester/DetermGETXGenerator.cc +++ b/src/mem/ruby/tester/DetermGETXGenerator.cc @@ -1,58 +1,30 @@ - /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/DetermGETXGenerator.hh b/src/mem/ruby/tester/DetermGETXGenerator.hh index 7d7e9ea70..567177c6d 100644 --- a/src/mem/ruby/tester/DetermGETXGenerator.hh +++ b/src/mem/ruby/tester/DetermGETXGenerator.hh @@ -1,58 +1,30 @@ - /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/DetermInvGenerator.cc b/src/mem/ruby/tester/DetermInvGenerator.cc index 73ef8b66a..bf1f3c3d1 100644 --- a/src/mem/ruby/tester/DetermInvGenerator.cc +++ b/src/mem/ruby/tester/DetermInvGenerator.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/DetermInvGenerator.hh b/src/mem/ruby/tester/DetermInvGenerator.hh index fc334c0e3..521ac8710 100644 --- a/src/mem/ruby/tester/DetermInvGenerator.hh +++ b/src/mem/ruby/tester/DetermInvGenerator.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ @@ -73,7 +46,6 @@ #include "mem/ruby/common/Address.hh" #include "mem/ruby/common/Global.hh" #include "mem/protocol/DetermInvGeneratorStatus.hh" -#include "Address_Tester.hh" #include "mem/ruby/tester/SpecifiedGenerator.hh" class DeterministicDriver; diff --git a/src/mem/ruby/tester/DetermSeriesGETSGenerator.cc b/src/mem/ruby/tester/DetermSeriesGETSGenerator.cc index 47a4eda0d..8663fb90c 100644 --- a/src/mem/ruby/tester/DetermSeriesGETSGenerator.cc +++ b/src/mem/ruby/tester/DetermSeriesGETSGenerator.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/DetermSeriesGETSGenerator.hh b/src/mem/ruby/tester/DetermSeriesGETSGenerator.hh index e2034bde1..51d1638f6 100644 --- a/src/mem/ruby/tester/DetermSeriesGETSGenerator.hh +++ b/src/mem/ruby/tester/DetermSeriesGETSGenerator.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/DeterministicDriver.cc b/src/mem/ruby/tester/DeterministicDriver.cc index b6eb79497..e09f633b5 100644 --- a/src/mem/ruby/tester/DeterministicDriver.cc +++ b/src/mem/ruby/tester/DeterministicDriver.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ @@ -169,8 +142,6 @@ bool DeterministicDriver::isStoreReady(NodeID node) bool DeterministicDriver::isStoreReady(NodeID node, Address addr) { - int addr_number = addr.getAddress()/DATA_BLOCK_BYTES; - return isAddrReady(node, m_store_vector, addr); } diff --git a/src/mem/ruby/tester/DeterministicDriver.hh b/src/mem/ruby/tester/DeterministicDriver.hh index 61c028f0c..7c77666be 100644 --- a/src/mem/ruby/tester/DeterministicDriver.hh +++ b/src/mem/ruby/tester/DeterministicDriver.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/RaceyDriver.cc b/src/mem/ruby/tester/RaceyDriver.cc index 2cde0d432..57445d252 100644 --- a/src/mem/ruby/tester/RaceyDriver.cc +++ b/src/mem/ruby/tester/RaceyDriver.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2005 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Ross Dickson, Pacia Harper, Milo Martin, Michael Marty, - Carl Mauer, Kevin Moore, Manoj Plakal, Daniel Sorin, Min Xu, and - Luke Yen. - - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/RaceyDriver.hh b/src/mem/ruby/tester/RaceyDriver.hh index d7a5c278d..e9b4e3425 100644 --- a/src/mem/ruby/tester/RaceyDriver.hh +++ b/src/mem/ruby/tester/RaceyDriver.hh @@ -1,58 +1,30 @@ - /* - Copyright (C) 1999-2005 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Ross Dickson, Pacia Harper, Milo Martin, Michael Marty, - Carl Mauer, Kevin Moore, Manoj Plakal, Daniel Sorin, Min Xu, and - Luke Yen. - - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/RaceyPseudoThread.cc b/src/mem/ruby/tester/RaceyPseudoThread.cc index 7d23b7286..79f6d1550 100644 --- a/src/mem/ruby/tester/RaceyPseudoThread.cc +++ b/src/mem/ruby/tester/RaceyPseudoThread.cc @@ -1,20 +1,30 @@ /* - * Copyright (c) 1999 by Mark Hill and David Wood for the Wisconsin - * Multifacet Project. ALL RIGHTS RESERVED. + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. * - * ##HEADER## + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. * - * This software is furnished under a license and may be used and - * copied only in accordance with the terms of such license and the - * inclusion of the above copyright notice. This software or any - * other copies thereof or any derivative works may not be provided or - * otherwise made available to any other persons. Title to and - * ownership of the software is retained by Mark Hill and David Wood. - * Any use of this software must include the above copyright notice. - * - * THIS SOFTWARE IS PROVIDED "AS IS". THE LICENSOR MAKES NO - * WARRANTIES ABOUT ITS CORRECTNESS OR PERFORMANCE. - * */ + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * Description: see RaceyPseudoThread.h @@ -262,7 +272,6 @@ void RaceyPseudoThread::store_sig(unsigned index, unsigned value) { m_read = false; m_value = value; uint8_t * write_data = new uint8_t[4]; - uint8_t * read_data = new uint8_t[4]; memcpy(write_data, &value, 4); @@ -273,8 +282,6 @@ void RaceyPseudoThread::store_sig(unsigned index, unsigned value) { // pc is zero, problem? int64_t request_id = libruby_issue_request(libruby_get_port_by_name(port_name), RubyRequest(sig(index), write_data, 4, 0, RubyRequestType_ST, RubyAccessMode_User)); - //int64_t request_id = libruby_issue_request(libruby_get_port_by_name(port_name), RubyRequest(sig(index), read_data, 4, 0, RubyRequestType_RMW_Read, RubyAccessMode_User)); - //int64_t request_id = libruby_issue_request(libruby_get_port_by_name(port_name), RubyRequest(sig(index), write_data, 4, 0, RubyRequestType_RMW_Write, RubyAccessMode_User)); ASSERT(m_driver.requests.find(request_id) == m_driver.requests.end()); @@ -296,7 +303,6 @@ void RaceyPseudoThread::store_m(unsigned index, unsigned value) { m_read = false; m_value = value; uint8_t * write_data = new uint8_t[4]; - uint8_t * read_data = new uint8_t[4]; memcpy(write_data, &value, 4); char name [] = "Sequencer_"; @@ -305,8 +311,6 @@ void RaceyPseudoThread::store_m(unsigned index, unsigned value) { // pc is zero, problem? int64_t request_id = libruby_issue_request(libruby_get_port_by_name(port_name), RubyRequest(m(index), write_data, 4, 0, RubyRequestType_ST, RubyAccessMode_User)); - //int64_t request_id = libruby_issue_request(libruby_get_port_by_name(port_name), RubyRequest(m(index), read_data, 4, 0, RubyRequestType_RMW_Read, RubyAccessMode_User)); - //int64_t request_id = libruby_issue_request(libruby_get_port_by_name(port_name), RubyRequest(m(index), write_data, 4, 0, RubyRequestType_RMW_Write, RubyAccessMode_User)); ASSERT(m_driver.requests.find(request_id) == m_driver.requests.end()); diff --git a/src/mem/ruby/tester/RaceyPseudoThread.hh b/src/mem/ruby/tester/RaceyPseudoThread.hh index 381cc1d87..103e42111 100644 --- a/src/mem/ruby/tester/RaceyPseudoThread.hh +++ b/src/mem/ruby/tester/RaceyPseudoThread.hh @@ -1,20 +1,30 @@ /* - * Copyright (c) 1999 by Mark Hill and David Wood for the Wisconsin - * Multifacet Project. ALL RIGHTS RESERVED. + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. * - * ##HEADER## + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. * - * This software is furnished under a license and may be used and - * copied only in accordance with the terms of such license and the - * inclusion of the above copyright notice. This software or any - * other copies thereof or any derivative works may not be provided or - * otherwise made available to any other persons. Title to and - * ownership of the software is retained by Mark Hill and David Wood. - * Any use of this software must include the above copyright notice. - * - * THIS SOFTWARE IS PROVIDED "AS IS". THE LICENSOR MAKES NO - * WARRANTIES ABOUT ITS CORRECTNESS OR PERFORMANCE. - * */ + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * Description: This implements a pseudo racey thread which drives ruby timing diff --git a/src/mem/ruby/tester/SConscript b/src/mem/ruby/tester/SConscript index 9c65ed794..cf3d60794 100644 --- a/src/mem/ruby/tester/SConscript +++ b/src/mem/ruby/tester/SConscript @@ -37,4 +37,9 @@ if not env['RUBY']: #Source('DetermInvGenerator.cc') #Source('DetermSeriesGETSGenerator.cc') #Source('DeterministicDriver.cc') -#ource('SpecifiedGenerator.cc') +#Source('SpecifiedGenerator.cc') +#Source('getopt.cc') +#Source('main.cc') +#Source('test_framework.cc') +#Source('RaceyDriver.cc') +#Source('RaceyPseudoThread.cc') diff --git a/src/mem/ruby/tester/SpecifiedGenerator.cc b/src/mem/ruby/tester/SpecifiedGenerator.cc index 15a1e046f..f82cb1533 100644 --- a/src/mem/ruby/tester/SpecifiedGenerator.cc +++ b/src/mem/ruby/tester/SpecifiedGenerator.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2005 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Ross Dickson, Pacia Harper, Milo Martin, Michael Marty, - Carl Mauer, Kevin Moore, Manoj Plakal, Daniel Sorin, Min Xu, and - Luke Yen. - - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/SpecifiedGenerator.hh b/src/mem/ruby/tester/SpecifiedGenerator.hh index dffb699ea..3287a4055 100644 --- a/src/mem/ruby/tester/SpecifiedGenerator.hh +++ b/src/mem/ruby/tester/SpecifiedGenerator.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2005 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Ross Dickson, Pacia Harper, Milo Martin, Michael Marty, - Carl Mauer, Kevin Moore, Manoj Plakal, Daniel Sorin, Min Xu, and - Luke Yen. - - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ +* Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/Tester_Globals.hh b/src/mem/ruby/tester/Tester_Globals.hh index cecedeaad..a893d7d25 100644 --- a/src/mem/ruby/tester/Tester_Globals.hh +++ b/src/mem/ruby/tester/Tester_Globals.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/getopt.cc b/src/mem/ruby/tester/getopt.cc new file mode 100644 index 000000000..f0fbe6473 --- /dev/null +++ b/src/mem/ruby/tester/getopt.cc @@ -0,0 +1,945 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu + before changing it! + + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>. + Ditto for AIX 3.2 and <stdlib.h>. */ +#ifndef _NO_PROTO +#define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#if !defined (__STDC__) || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include <stdio.h> + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#if defined (_LIBC) || !defined (__GNU_LIBRARY__) + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +#include <stdlib.h> +#endif /* GNU C library. */ + +/* This is for other GNU distributions with internationalized messages. + The GNU C Library itself does not yet support such messages. */ +#if HAVE_LIBINTL_H +# include <libintl.h> +#else +# define gettext(msgid) (msgid) +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "mem/ruby/tester/getopt.hh" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns EOF, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* XXX 1003.2 says this must be 1 before any call. */ +int optind = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return EOF with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +#include <string.h> +#define my_index strchr +#else + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +#include <stdlib.h> +#include <string.h> +//char *getenv(); + +static char * +my_index ( + const char *str, + int chr ) +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +#if !defined (__STDC__) || !__STDC__ +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen (const char *); +#endif /* not __STDC__ */ +#endif /* __GNUC__ */ + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +static void +exchange ( + char **argv ) +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +static const char * +_getopt_initialize ( + const char *optstring ) +{ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind = 1; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns `EOF'. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal ( + int argc, + char *const *argv, + const char *optstring, + const struct option *longopts, + int *longind, + int long_only ) +{ + optarg = NULL; + + if (optind == 0) + { + optstring = _getopt_initialize (optstring); + optind = 1; /* Don't scan ARGV[0], the program name. */ + } + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc + && (argv[optind][0] != '-' || argv[optind][1] == '\0')) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return EOF; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if ((argv[optind][0] != '-' || argv[optind][1] == '\0')) + { + if (ordering == REQUIRE_ORDER) + return EOF; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if (nameend - nextchar == int(strlen (p->name))) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, gettext ("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + gettext ("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + gettext ("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + gettext ("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, gettext ("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, gettext ("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, gettext ("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, gettext ("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + gettext ("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt_gnu ( + int argc, + char *const *argv, + const char *optstring ) +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* _LIBC or not __GNU_LIBRARY__. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main ( + int argc, + char **argv ) +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt_gnu (argc, argv, "abc:d:0123456789"); + if (c == EOF) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ + +/* getopt_long and getopt_long_only entry points for GNU getopt. + Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 1994 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "mem/ruby/tester/getopt.hh" + +#if !defined (__STDC__) || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include <stdio.h> + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#if defined (_LIBC) || !defined (__GNU_LIBRARY__) + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include <stdlib.h> +#else + +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long ( + int argc, + char *const *argv, + const char *options, + const struct option *long_options, + int *opt_index ) +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only ( + int argc, + char *const *argv, + const char *options, + const struct option *long_options, + int *opt_index ) +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* _LIBC or not __GNU_LIBRARY__. */ + +#ifdef TEST + +#include <stdio.h> + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == EOF) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case 'd': + printf ("option d with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/src/mem/ruby/tester/getopt.hh b/src/mem/ruby/tester/getopt.hh new file mode 100644 index 000000000..621b449f9 --- /dev/null +++ b/src/mem/ruby/tester/getopt.hh @@ -0,0 +1,129 @@ +/* Declarations for getopt. + Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns EOF, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ +#if defined (__STDC__) && __STDC__ + const char *name; +#else + char *name; +#endif + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#if defined (__STDC__) && __STDC__ +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt_gnu (int argc, char *const *argv, const char *shortopts); +#else /* not __GNU_LIBRARY__ */ +extern int getopt_gnu (); +#endif /* __GNU_LIBRARY__ */ +extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); +extern int getopt_long_only (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind, + int long_only); +#else /* not __STDC__ */ +extern int getopt_gnu (); +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GETOPT_H */ diff --git a/src/mem/ruby/tester/main.cc b/src/mem/ruby/tester/main.cc index a37827521..849206de9 100644 --- a/src/mem/ruby/tester/main.cc +++ b/src/mem/ruby/tester/main.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/main.hh b/src/mem/ruby/tester/main.hh index a5fa2b995..a6a0d73b6 100644 --- a/src/mem/ruby/tester/main.hh +++ b/src/mem/ruby/tester/main.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/ruby/tester/test_framework.cc b/src/mem/ruby/tester/test_framework.cc index cc11abe8a..99d11887f 100644 --- a/src/mem/ruby/tester/test_framework.cc +++ b/src/mem/ruby/tester/test_framework.cc @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ @@ -312,7 +285,6 @@ static void parseOptions(int argc, char **argv) char c; /* Parse command line options. */ - bool error; while ((c = getopt_long (argc, argv, short_options.c_str(), long_options, (int *) 0)) != EOF) { switch (c) { case 0: diff --git a/src/mem/ruby/tester/test_framework.hh b/src/mem/ruby/tester/test_framework.hh index afdd146a9..625abe459 100644 --- a/src/mem/ruby/tester/test_framework.hh +++ b/src/mem/ruby/tester/test_framework.hh @@ -1,58 +1,31 @@ /* - Copyright (C) 1999-2008 by Mark D. Hill and David A. Wood for the - Wisconsin Multifacet Project. Contact: gems@cs.wisc.edu - http://www.cs.wisc.edu/gems/ - - -------------------------------------------------------------------- - - This file is part of the Ruby Multiprocessor Memory System Simulator, - a component of the Multifacet GEMS (General Execution-driven - Multiprocessor Simulator) software toolset originally developed at - the University of Wisconsin-Madison. - - Ruby was originally developed primarily by Milo Martin and Daniel - Sorin with contributions from Ross Dickson, Carl Mauer, and Manoj - Plakal. - - Substantial further development of Multifacet GEMS at the - University of Wisconsin was performed by Alaa Alameldeen, Brad - Beckmann, Jayaram Bobba, Ross Dickson, Dan Gibson, Pacia Harper, - Derek Hower, Milo Martin, Michael Marty, Carl Mauer, Michelle Moravan, - Kevin Moore, Andrew Phelps, Manoj Plakal, Daniel Sorin, Haris Volos, - Min Xu, and Luke Yen. - -------------------------------------------------------------------- - - If your use of this software contributes to a published paper, we - request that you (1) cite our summary paper that appears on our - website (http://www.cs.wisc.edu/gems/) and (2) e-mail a citation - for your published paper to gems@cs.wisc.edu. - - If you redistribute derivatives of this software, we request that - you notify us and either (1) ask people to register with us at our - website (http://www.cs.wisc.edu/gems/) or (2) collect registration - information and periodically send it to us. - - -------------------------------------------------------------------- - - Multifacet GEMS is free software; you can redistribute it and/or - modify it under the terms of version 2 of the GNU General Public - License as published by the Free Software Foundation. - - Multifacet GEMS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the Multifacet GEMS; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA - - The GNU General Public License is contained in the file LICENSE. - -### END HEADER ### -*/ + * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ /* * $Id$ diff --git a/src/mem/slicc/symbols/StateMachine.cc b/src/mem/slicc/symbols/StateMachine.cc index e042f9aa0..4a9ee3714 100644 --- a/src/mem/slicc/symbols/StateMachine.cc +++ b/src/mem/slicc/symbols/StateMachine.cc @@ -832,17 +832,21 @@ void StateMachine::printCWakeup(ostream& out, string component) locked_read_request = addr; \n \ } \n \ else if (addr == locked_read_request) { \n \ - assert (servicing_atomic); \n \ - //servicing_atomic = m_version; \n \ + ; // do nothing \n\ } \n \ - else { \n \ - postpone = true; \n \ - g_eventQueue_ptr->scheduleEvent(this, 1); \n \ + else { \n \ + assert(0); // should never be here if servicing one request at a time \n\ } \n \ } \n \ else if (addr != locked_read_request) { \n \ - postpone = true; \n \ - g_eventQueue_ptr->scheduleEvent(this, 1); \n \ + // this is probably caused by shift optimizations \n \ + locked_read_request = addr; \n\ + } \n \ + } \n \ + else { \n \ + if (locked_read_request != Address(-1)) { \n \ + locked_read_request = Address(-1); \n \ + servicing_atomic = false; \n \ } \n \ } \n \ if (!postpone) { \n \ |