diff options
-rw-r--r-- | configs/ruby/Network_test.py | 5 | ||||
-rw-r--r-- | src/arch/arm/insts/macromem.cc | 4 | ||||
-rw-r--r-- | src/base/loader/elf_object.cc | 6 | ||||
-rw-r--r-- | src/base/loader/elf_object.hh | 2 | ||||
-rw-r--r-- | src/base/loader/object_file.hh | 3 | ||||
-rw-r--r-- | src/mem/protocol/MOESI_CMP_directory-dma.sm | 28 | ||||
-rw-r--r-- | src/sim/process.cc | 3 |
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; |