system.hh revision 8769
11758SN/A/* 21762SN/A * Copyright (c) 2002-2005 The Regents of The University of Michigan 31758SN/A * All rights reserved. 41758SN/A * 51758SN/A * Redistribution and use in source and binary forms, with or without 61758SN/A * modification, are permitted provided that the following conditions are 71758SN/A * met: redistributions of source code must retain the above copyright 81758SN/A * notice, this list of conditions and the following disclaimer; 91758SN/A * redistributions in binary form must reproduce the above copyright 101758SN/A * notice, this list of conditions and the following disclaimer in the 111758SN/A * documentation and/or other materials provided with the distribution; 121758SN/A * neither the name of the copyright holders nor the names of its 131758SN/A * contributors may be used to endorse or promote products derived from 141758SN/A * this software without specific prior written permission. 151758SN/A * 161758SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 171758SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 181758SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 191758SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 201758SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 211758SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 221758SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 231758SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 241758SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 251758SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 261758SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272665Ssaidi@eecs.umich.edu * 282665Ssaidi@eecs.umich.edu * Authors: Ali Saidi 292665Ssaidi@eecs.umich.edu */ 301758SN/A 312SN/A#ifndef __ARCH_SPARC_SYSTEM_HH__ 322984Sgblack@eecs.umich.edu#define __ARCH_SPARC_SYSTEM_HH__ 33732SN/A 34732SN/A#include <string> 352984Sgblack@eecs.umich.edu#include <vector> 363536Sgblack@eecs.umich.edu 37732SN/A#include "base/loader/symtab.hh" 38732SN/A#include "cpu/pc_event.hh" 391858SN/A#include "kern/system_events.hh" 401717SN/A#include "params/SparcSystem.hh" 412683Sktlim@umich.edu#include "sim/sim_object.hh" 422680Sktlim@umich.edu#include "sim/system.hh" 431070SN/A 44676SN/Aclass SparcSystem : public System 452710Sstever@eecs.umich.edu{ 462SN/A public: 471858SN/A typedef SparcSystemParams Params; 482SN/A SparcSystem(Params *p); 491147SN/A ~SparcSystem(); 501147SN/A 512SN/A/** 522SN/A * Serialization stuff 532SN/A */ 542SN/A public: 552SN/A virtual void serialize(std::ostream &os); 562680Sktlim@umich.edu virtual void unserialize(Checkpoint *cp, const std::string §ion); 572SN/A 582680Sktlim@umich.edu /** reset binary symbol table */ 59190SN/A SymbolTable *resetSymtab; 602680Sktlim@umich.edu 612680Sktlim@umich.edu /** hypervison binary symbol table */ 622114SN/A SymbolTable *hypervisorSymtab; 633468Sgblack@eecs.umich.edu 642700Sktlim@umich.edu /** openboot symbol table */ 653459Sgblack@eecs.umich.edu SymbolTable *openbootSymtab; 662680Sktlim@umich.edu 672700Sktlim@umich.edu /** nvram symbol table? */ 682700Sktlim@umich.edu SymbolTable *nvramSymtab; 692SN/A 702SN/A /** hypervisor desc symbol table? */ 712SN/A SymbolTable *hypervisorDescSymtab; 722SN/A 732SN/A /** partition desc symbol table? */ 742SN/A SymbolTable *partitionDescSymtab; 752SN/A 762680Sktlim@umich.edu /** Object pointer for the reset binary */ 772SN/A ObjectFile *reset; 782190SN/A 792680Sktlim@umich.edu /** Object pointer for the hypervisor code */ 802190SN/A ObjectFile *hypervisor; 812SN/A 823459Sgblack@eecs.umich.edu /** Object pointer for the openboot code */ 833459Sgblack@eecs.umich.edu ObjectFile *openboot; 843459Sgblack@eecs.umich.edu 852SN/A /** Object pointer for the nvram image */ 862SN/A ObjectFile *nvram; 872SN/A 881133SN/A /** Object pointer for the hypervisor description image */ 89716SN/A ObjectFile *hypervisor_desc; 901133SN/A 91716SN/A /** Object pointer for the partition description image */ 92716SN/A ObjectFile *partition_desc; 93716SN/A 94716SN/A /** System Tick for syncronized tick across all cpus. */ 95716SN/A Tick sysTick; 96716SN/A 971133SN/A /** functional port to ROM */ 98716SN/A FunctionalPort funcRomPort; 993459Sgblack@eecs.umich.edu 100716SN/A /** functional port to nvram */ 101716SN/A FunctionalPort funcNvramPort; 1023459Sgblack@eecs.umich.edu 103716SN/A /** functional port to hypervisor description */ 104716SN/A FunctionalPort funcHypDescPort; 1053459Sgblack@eecs.umich.edu 106716SN/A /** functional port to partition description */ 107716SN/A FunctionalPort funcPartDescPort; 108716SN/A 109716SN/A protected: 110716SN/A const Params *params() const { return (const Params *)_params; } 111716SN/A 112716SN/A /** Add a function-based event to reset binary. */ 1131133SN/A template <class T> 114716SN/A T * 115716SN/A addResetFuncEvent(const char *lbl) 116716SN/A { 117716SN/A return addFuncEvent<T>(resetSymtab, lbl); 118716SN/A } 119716SN/A 120716SN/A /** Add a function-based event to the hypervisor. */ 121716SN/A template <class T> 122716SN/A T * 123716SN/A addHypervisorFuncEvent(const char *lbl) 124716SN/A { 125716SN/A return addFuncEvent<T>(hypervisorSymtab, lbl); 1263459Sgblack@eecs.umich.edu } 1273459Sgblack@eecs.umich.edu 1283459Sgblack@eecs.umich.edu /** Add a function-based event to the openboot. */ 1292147SN/A template <class T> 130716SN/A T * 1313459Sgblack@eecs.umich.edu addOpenbootFuncEvent(const char *lbl) 132716SN/A { 133716SN/A return addFuncEvent<T>(openbootSymtab, lbl); 134716SN/A } 135716SN/A 1361133SN/A virtual Addr 137716SN/A fixFuncEventAddr(Addr addr) 1381133SN/A { 139716SN/A //XXX This may eventually have to do something useful. 140716SN/A return addr; 141739SN/A } 142739SN/A}; 1432683Sktlim@umich.edu 1442683Sktlim@umich.edu#endif 145716SN/A 146716SN/A