system.hh revision 8706
111784Sarthur.perais@inria.fr/* 211784Sarthur.perais@inria.fr * Copyright (c) 2002-2005 The Regents of The University of Michigan 311784Sarthur.perais@inria.fr * All rights reserved. 411784Sarthur.perais@inria.fr * 511784Sarthur.perais@inria.fr * Redistribution and use in source and binary forms, with or without 611784Sarthur.perais@inria.fr * modification, are permitted provided that the following conditions are 711784Sarthur.perais@inria.fr * met: redistributions of source code must retain the above copyright 811784Sarthur.perais@inria.fr * notice, this list of conditions and the following disclaimer; 911784Sarthur.perais@inria.fr * redistributions in binary form must reproduce the above copyright 1011784Sarthur.perais@inria.fr * notice, this list of conditions and the following disclaimer in the 1111784Sarthur.perais@inria.fr * documentation and/or other materials provided with the distribution; 1211784Sarthur.perais@inria.fr * neither the name of the copyright holders nor the names of its 1311784Sarthur.perais@inria.fr * contributors may be used to endorse or promote products derived from 1411784Sarthur.perais@inria.fr * this software without specific prior written permission. 1511784Sarthur.perais@inria.fr * 1611784Sarthur.perais@inria.fr * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1711784Sarthur.perais@inria.fr * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1811784Sarthur.perais@inria.fr * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1911784Sarthur.perais@inria.fr * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2011784Sarthur.perais@inria.fr * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2111784Sarthur.perais@inria.fr * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2211784Sarthur.perais@inria.fr * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2311784Sarthur.perais@inria.fr * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2411784Sarthur.perais@inria.fr * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2511784Sarthur.perais@inria.fr * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2611784Sarthur.perais@inria.fr * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2711784Sarthur.perais@inria.fr * 2811784Sarthur.perais@inria.fr * Authors: Ali Saidi 2911784Sarthur.perais@inria.fr * Nathan Binkert 3011784Sarthur.perais@inria.fr */ 3111784Sarthur.perais@inria.fr 3211784Sarthur.perais@inria.fr#ifndef __ARCH_ALPHA_SYSTEM_HH__ 3311784Sarthur.perais@inria.fr#define __ARCH_ALPHA_SYSTEM_HH__ 3411784Sarthur.perais@inria.fr 3511784Sarthur.perais@inria.fr#include <string> 3611784Sarthur.perais@inria.fr#include <vector> 3711784Sarthur.perais@inria.fr 3811784Sarthur.perais@inria.fr#include "base/loader/symtab.hh" 3911784Sarthur.perais@inria.fr#include "cpu/pc_event.hh" 4011784Sarthur.perais@inria.fr#include "kern/system_events.hh" 4111784Sarthur.perais@inria.fr#include "params/AlphaSystem.hh" 4211784Sarthur.perais@inria.fr#include "sim/sim_object.hh" 4311784Sarthur.perais@inria.fr#include "sim/system.hh" 4412334Sgabeblack@google.com 4511784Sarthur.perais@inria.frclass AlphaSystem : public System 4611784Sarthur.perais@inria.fr{ 4711784Sarthur.perais@inria.fr public: 4811784Sarthur.perais@inria.fr typedef AlphaSystemParams Params; 4911784Sarthur.perais@inria.fr AlphaSystem(Params *p); 5011784Sarthur.perais@inria.fr ~AlphaSystem(); 5111784Sarthur.perais@inria.fr 5213420Spau.cabre@metempsy.com public: 5311784Sarthur.perais@inria.fr 5411784Sarthur.perais@inria.fr /** 5511784Sarthur.perais@inria.fr * Initialise the state of the system. 5613443Spau.cabre@metempsy.com */ 5711784Sarthur.perais@inria.fr virtual void initState(); 5811784Sarthur.perais@inria.fr 5911784Sarthur.perais@inria.fr /** 6013444Spau.cabre@metempsy.com * Serialization stuff 6113442Spau.cabre@metempsy.com */ 6213442Spau.cabre@metempsy.com virtual void serialize(std::ostream &os); 6313442Spau.cabre@metempsy.com virtual void unserialize(Checkpoint *cp, const std::string §ion); 6413442Spau.cabre@metempsy.com 6513444Spau.cabre@metempsy.com /** 6613442Spau.cabre@metempsy.com * Set the m5AlphaAccess pointer in the console 6713442Spau.cabre@metempsy.com */ 6813442Spau.cabre@metempsy.com void setAlphaAccess(Addr access); 6913444Spau.cabre@metempsy.com 7013444Spau.cabre@metempsy.com /** console symbol table */ 7113444Spau.cabre@metempsy.com SymbolTable *consoleSymtab; 7213444Spau.cabre@metempsy.com 7313444Spau.cabre@metempsy.com /** pal symbol table */ 7413444Spau.cabre@metempsy.com SymbolTable *palSymtab; 7511784Sarthur.perais@inria.fr 7613443Spau.cabre@metempsy.com /** Object pointer for the console code */ 7713443Spau.cabre@metempsy.com ObjectFile *console; 7813443Spau.cabre@metempsy.com 7913443Spau.cabre@metempsy.com /** Object pointer for the PAL code */ 8013443Spau.cabre@metempsy.com ObjectFile *pal; 8113442Spau.cabre@metempsy.com 8213442Spau.cabre@metempsy.com#ifndef NDEBUG 8313442Spau.cabre@metempsy.com /** Event to halt the simulator if the console calls panic() */ 8413442Spau.cabre@metempsy.com BreakPCEvent *consolePanicEvent; 8513442Spau.cabre@metempsy.com#endif 8613444Spau.cabre@metempsy.com 8713444Spau.cabre@metempsy.com protected: 8813444Spau.cabre@metempsy.com const Params *params() const { return (const Params *)_params; } 8913444Spau.cabre@metempsy.com 9013444Spau.cabre@metempsy.com /** Add a function-based event to PALcode. */ 9113444Spau.cabre@metempsy.com template <class T> 9213444Spau.cabre@metempsy.com T * 9313444Spau.cabre@metempsy.com addPalFuncEvent(const char *lbl) 9413444Spau.cabre@metempsy.com { 9513444Spau.cabre@metempsy.com return addFuncEvent<T>(palSymtab, lbl); 9611784Sarthur.perais@inria.fr } 9711784Sarthur.perais@inria.fr 9811784Sarthur.perais@inria.fr /** Add a function-based event to the console code. */ 9911784Sarthur.perais@inria.fr template <class T> 10011784Sarthur.perais@inria.fr T * 10111784Sarthur.perais@inria.fr addConsoleFuncEvent(const char *lbl) 10211784Sarthur.perais@inria.fr { 10311784Sarthur.perais@inria.fr return addFuncEvent<T>(consoleSymtab, lbl); 10411784Sarthur.perais@inria.fr } 10511784Sarthur.perais@inria.fr 10611784Sarthur.perais@inria.fr virtual Addr fixFuncEventAddr(Addr addr); 10711784Sarthur.perais@inria.fr}; 10811784Sarthur.perais@inria.fr 10911784Sarthur.perais@inria.fr#endif // __ARCH_ALPHA_SYSTEM_HH__ 11011784Sarthur.perais@inria.fr 11111784Sarthur.perais@inria.fr