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 &section);
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