summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/ruby/Network_test.py5
-rw-r--r--src/arch/arm/insts/macromem.cc4
-rw-r--r--src/base/loader/elf_object.cc6
-rw-r--r--src/base/loader/elf_object.hh2
-rw-r--r--src/base/loader/object_file.hh3
-rw-r--r--src/mem/protocol/MOESI_CMP_directory-dma.sm28
-rw-r--r--src/sim/process.cc3
7 files changed, 46 insertions, 5 deletions
diff --git a/configs/ruby/Network_test.py b/configs/ruby/Network_test.py
index de38e72fb..c1a1f9509 100644
--- a/configs/ruby/Network_test.py
+++ b/configs/ruby/Network_test.py
@@ -93,11 +93,8 @@ def create_system(options, system, piobus, dma_ports, ruby_system):
ruby_system = ruby_system)
l1_cntrl.sequencer = cpu_seq
-
- if piobus != None:
- cpu_seq.pio_port = piobus.slave
-
exec("ruby_system.l1_cntrl%d = l1_cntrl" % i)
+
#
# Add controllers and sequencers to the appropriate lists
#
diff --git a/src/arch/arm/insts/macromem.cc b/src/arch/arm/insts/macromem.cc
index decd194c4..26a916fc7 100644
--- a/src/arch/arm/insts/macromem.cc
+++ b/src/arch/arm/insts/macromem.cc
@@ -110,6 +110,10 @@ MacroMemOp::MacroMemOp(const char *mnem, ExtMachInst machInst,
// This must be the exception return form of ldm.
*++uop = new MicroLdrRetUop(machInst, regIdx,
INTREG_UREG0, up, addr);
+ if (!(condCode == COND_AL || condCode == COND_UC))
+ (*uop)->setFlag(StaticInst::IsCondControl);
+ else
+ (*uop)->setFlag(StaticInst::IsUncondControl);
} else {
*++uop = new MicroLdrUop(machInst, regIdx,
INTREG_UREG0, up, addr);
diff --git a/src/base/loader/elf_object.cc b/src/base/loader/elf_object.cc
index f6a18db8a..b6253adbe 100644
--- a/src/base/loader/elf_object.cc
+++ b/src/base/loader/elf_object.cc
@@ -415,6 +415,12 @@ ElfObject::loadLocalSymbols(SymbolTable *symtab, Addr addrMask)
}
bool
+ElfObject::loadWeakSymbols(SymbolTable *symtab, Addr addrMask)
+{
+ return loadSomeSymbols(symtab, STB_WEAK, addrMask);
+}
+
+bool
ElfObject::loadSections(PortProxy& memProxy, Addr addrMask)
{
if (!ObjectFile::loadSections(memProxy, addrMask))
diff --git a/src/base/loader/elf_object.hh b/src/base/loader/elf_object.hh
index 350a80db1..d3d3e5197 100644
--- a/src/base/loader/elf_object.hh
+++ b/src/base/loader/elf_object.hh
@@ -71,6 +71,8 @@ class ElfObject : public ObjectFile
std::numeric_limits<Addr>::max());
virtual bool loadLocalSymbols(SymbolTable *symtab, Addr addrMask =
std::numeric_limits<Addr>::max());
+ virtual bool loadWeakSymbols(SymbolTable *symtab, Addr addrMask =
+ std::numeric_limits<Addr>::max());
virtual bool isDynamic() { return sectionExists(".interp"); }
virtual bool hasTLS() { return sectionExists(".tbss"); }
diff --git a/src/base/loader/object_file.hh b/src/base/loader/object_file.hh
index 4a789d321..bdc9a31a1 100644
--- a/src/base/loader/object_file.hh
+++ b/src/base/loader/object_file.hh
@@ -89,6 +89,9 @@ class ObjectFile
std::numeric_limits<Addr>::max()) = 0;
virtual bool loadLocalSymbols(SymbolTable *symtab, Addr addrMask =
std::numeric_limits<Addr>::max()) = 0;
+ virtual bool loadWeakSymbols(SymbolTable *symtab, Addr addrMask =
+ std::numeric_limits<Addr>::max())
+ { return false; }
virtual bool isDynamic() { return false; }
virtual bool hasTLS() { return false; }
diff --git a/src/mem/protocol/MOESI_CMP_directory-dma.sm b/src/mem/protocol/MOESI_CMP_directory-dma.sm
index 18ab25f65..d96276245 100644
--- a/src/mem/protocol/MOESI_CMP_directory-dma.sm
+++ b/src/mem/protocol/MOESI_CMP_directory-dma.sm
@@ -1,3 +1,31 @@
+/*
+ * Copyright (c) 2009-2013 Mark D. Hill and David A. Wood
+ * Copyright (c) 2010-2011 Advanced Micro Devices, Inc.
+ * 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.
+ */
machine(DMA, "DMA Controller")
: DMASequencer * dma_sequencer,
diff --git a/src/sim/process.cc b/src/sim/process.cc
index 22a886303..1654ea5c5 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -574,7 +574,8 @@ LiveProcess::LiveProcess(LiveProcessParams * params, ObjectFile *_objFile)
if (!debugSymbolTable) {
debugSymbolTable = new SymbolTable();
if (!objFile->loadGlobalSymbols(debugSymbolTable) ||
- !objFile->loadLocalSymbols(debugSymbolTable)) {
+ !objFile->loadLocalSymbols(debugSymbolTable) ||
+ !objFile->loadWeakSymbols(debugSymbolTable)) {
// didn't load any symbols
delete debugSymbolTable;
debugSymbolTable = NULL;