system.hh revision 6221
18012Ssaidi@eecs.umich.edu/* 28029Snate@binkert.org * Copyright (c) 2002-2005 The Regents of The University of Michigan 38029Snate@binkert.org * All rights reserved. 48029Snate@binkert.org * 58013Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without 68029Snate@binkert.org * modification, are permitted provided that the following conditions are 78029Snate@binkert.org * met: redistributions of source code must retain the above copyright 88029Snate@binkert.org * notice, this list of conditions and the following disclaimer; 98029Snate@binkert.org * redistributions in binary form must reproduce the above copyright 108029Snate@binkert.org * notice, this list of conditions and the following disclaimer in the 118029Snate@binkert.org * documentation and/or other materials provided with the distribution; 128029Snate@binkert.org * neither the name of the copyright holders nor the names of its 138029Snate@binkert.org * contributors may be used to endorse or promote products derived from 148029Snate@binkert.org * this software without specific prior written permission. 158029Snate@binkert.org * 168013Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 178029Snate@binkert.org * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 188029Snate@binkert.org * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 198029Snate@binkert.org * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 208029Snate@binkert.org * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218029Snate@binkert.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 228029Snate@binkert.org * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238029Snate@binkert.org * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248029Snate@binkert.org * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258029Snate@binkert.org * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 268029Snate@binkert.org * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278029Snate@binkert.org * 288013Sbinkertn@umich.edu * Authors: Ali Saidi 298012Ssaidi@eecs.umich.edu */ 308008Ssaidi@eecs.umich.edu 318008Ssaidi@eecs.umich.edu#ifndef __ARCH_SPARC_SYSTEM_HH__ 328008Ssaidi@eecs.umich.edu#define __ARCH_SPARC_SYSTEM_HH__ 338008Ssaidi@eecs.umich.edu 348008Ssaidi@eecs.umich.edu#include <string> 358023Ssaidi@eecs.umich.edu#include <vector> 368008Ssaidi@eecs.umich.edu 378008Ssaidi@eecs.umich.edu#include "base/loader/symtab.hh" 388008Ssaidi@eecs.umich.edu#include "cpu/pc_event.hh" 398008Ssaidi@eecs.umich.edu#include "kern/system_events.hh" 408008Ssaidi@eecs.umich.edu#include "params/SparcSystem.hh" 418013Sbinkertn@umich.edu#include "sim/sim_object.hh" 428013Sbinkertn@umich.edu#include "sim/system.hh" 438013Sbinkertn@umich.edu 448008Ssaidi@eecs.umich.educlass SparcSystem : public System 458008Ssaidi@eecs.umich.edu{ 468008Ssaidi@eecs.umich.edu public: 478008Ssaidi@eecs.umich.edu typedef SparcSystemParams Params; 488023Ssaidi@eecs.umich.edu SparcSystem(Params *p); 498023Ssaidi@eecs.umich.edu ~SparcSystem(); 508023Ssaidi@eecs.umich.edu 518023Ssaidi@eecs.umich.edu/** 528023Ssaidi@eecs.umich.edu * Serialization stuff 538023Ssaidi@eecs.umich.edu */ 548023Ssaidi@eecs.umich.edu public: 558023Ssaidi@eecs.umich.edu virtual void serialize(std::ostream &os); 568023Ssaidi@eecs.umich.edu virtual void unserialize(Checkpoint *cp, const std::string §ion); 578023Ssaidi@eecs.umich.edu 588023Ssaidi@eecs.umich.edu /** reset binary symbol table */ 598023Ssaidi@eecs.umich.edu SymbolTable *resetSymtab; 608024Ssaidi@eecs.umich.edu 618024Ssaidi@eecs.umich.edu /** hypervison binary symbol table */ 628024Ssaidi@eecs.umich.edu SymbolTable *hypervisorSymtab; 638023Ssaidi@eecs.umich.edu 648023Ssaidi@eecs.umich.edu /** openboot symbol table */ 658008Ssaidi@eecs.umich.edu SymbolTable *openbootSymtab; 668023Ssaidi@eecs.umich.edu 678023Ssaidi@eecs.umich.edu /** nvram symbol table? */ 688008Ssaidi@eecs.umich.edu SymbolTable *nvramSymtab; 698008Ssaidi@eecs.umich.edu 708008Ssaidi@eecs.umich.edu /** hypervisor desc symbol table? */ 718008Ssaidi@eecs.umich.edu SymbolTable *hypervisorDescSymtab; 728008Ssaidi@eecs.umich.edu 738008Ssaidi@eecs.umich.edu /** partition desc symbol table? */ 748008Ssaidi@eecs.umich.edu SymbolTable *partitionDescSymtab; 758008Ssaidi@eecs.umich.edu 768008Ssaidi@eecs.umich.edu /** Object pointer for the reset binary */ 778008Ssaidi@eecs.umich.edu ObjectFile *reset; 788008Ssaidi@eecs.umich.edu 798008Ssaidi@eecs.umich.edu /** Object pointer for the hypervisor code */ 808008Ssaidi@eecs.umich.edu ObjectFile *hypervisor; 818008Ssaidi@eecs.umich.edu 828008Ssaidi@eecs.umich.edu /** Object pointer for the openboot code */ 838008Ssaidi@eecs.umich.edu ObjectFile *openboot; 848008Ssaidi@eecs.umich.edu 858008Ssaidi@eecs.umich.edu /** Object pointer for the nvram image */ 868008Ssaidi@eecs.umich.edu ObjectFile *nvram; 878008Ssaidi@eecs.umich.edu 888008Ssaidi@eecs.umich.edu /** Object pointer for the hypervisor description image */ 898008Ssaidi@eecs.umich.edu ObjectFile *hypervisor_desc; 908008Ssaidi@eecs.umich.edu 918023Ssaidi@eecs.umich.edu /** Object pointer for the partition description image */ 928008Ssaidi@eecs.umich.edu ObjectFile *partition_desc; 938008Ssaidi@eecs.umich.edu 948008Ssaidi@eecs.umich.edu /** System Tick for syncronized tick across all cpus. */ 958008Ssaidi@eecs.umich.edu Tick sysTick; 968008Ssaidi@eecs.umich.edu 978008Ssaidi@eecs.umich.edu /** functional port to ROM */ 988008Ssaidi@eecs.umich.edu FunctionalPort funcRomPort; 998008Ssaidi@eecs.umich.edu 1008008Ssaidi@eecs.umich.edu /** functional port to nvram */ 1018008Ssaidi@eecs.umich.edu FunctionalPort funcNvramPort; 1028008Ssaidi@eecs.umich.edu 1038008Ssaidi@eecs.umich.edu /** functional port to hypervisor description */ 1048008Ssaidi@eecs.umich.edu FunctionalPort funcHypDescPort; 1058008Ssaidi@eecs.umich.edu 1068008Ssaidi@eecs.umich.edu /** functional port to partition description */ 1078008Ssaidi@eecs.umich.edu FunctionalPort funcPartDescPort; 1088008Ssaidi@eecs.umich.edu 1098013Sbinkertn@umich.edu protected: 1108008Ssaidi@eecs.umich.edu const Params *params() const { return (const Params *)_params; } 1118008Ssaidi@eecs.umich.edu 1128008Ssaidi@eecs.umich.edu /** Add a function-based event to reset binary. */ 1138008Ssaidi@eecs.umich.edu template <class T> 1148008Ssaidi@eecs.umich.edu T *addResetFuncEvent(const char *lbl) 1158008Ssaidi@eecs.umich.edu { 1168008Ssaidi@eecs.umich.edu return addFuncEvent<T>(resetSymtab, lbl); 1178008Ssaidi@eecs.umich.edu } 1188008Ssaidi@eecs.umich.edu 1198008Ssaidi@eecs.umich.edu /** Add a function-based event to the hypervisor. */ 1208008Ssaidi@eecs.umich.edu template <class T> 1218008Ssaidi@eecs.umich.edu T *addHypervisorFuncEvent(const char *lbl) 1228008Ssaidi@eecs.umich.edu { 1238008Ssaidi@eecs.umich.edu return addFuncEvent<T>(hypervisorSymtab, lbl); 1248008Ssaidi@eecs.umich.edu } 1258008Ssaidi@eecs.umich.edu 1268008Ssaidi@eecs.umich.edu /** Add a function-based event to the openboot. */ 1278008Ssaidi@eecs.umich.edu template <class T> 1288008Ssaidi@eecs.umich.edu T *addOpenbootFuncEvent(const char *lbl) 1298008Ssaidi@eecs.umich.edu { 1308008Ssaidi@eecs.umich.edu return addFuncEvent<T>(openbootSymtab, lbl); 1318008Ssaidi@eecs.umich.edu } 1328008Ssaidi@eecs.umich.edu 1338008Ssaidi@eecs.umich.edu virtual Addr fixFuncEventAddr(Addr addr) 1348008Ssaidi@eecs.umich.edu { 1358008Ssaidi@eecs.umich.edu //XXX This may eventually have to do something useful. 1368008Ssaidi@eecs.umich.edu return addr; 1378008Ssaidi@eecs.umich.edu } 1388008Ssaidi@eecs.umich.edu}; 1398008Ssaidi@eecs.umich.edu 1408008Ssaidi@eecs.umich.edu#endif 1418008Ssaidi@eecs.umich.edu 1428008Ssaidi@eecs.umich.edu