system.hh revision 2439
12810Srdreslin@umich.edu/* 211051Sandreas.hansson@arm.com * Copyright (c) 2002-2005 The Regents of The University of Michigan 311051Sandreas.hansson@arm.com * All rights reserved. 411051Sandreas.hansson@arm.com * 511051Sandreas.hansson@arm.com * Redistribution and use in source and binary forms, with or without 611051Sandreas.hansson@arm.com * modification, are permitted provided that the following conditions are 711051Sandreas.hansson@arm.com * met: redistributions of source code must retain the above copyright 811051Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer; 911051Sandreas.hansson@arm.com * redistributions in binary form must reproduce the above copyright 1011051Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer in the 1111051Sandreas.hansson@arm.com * documentation and/or other materials provided with the distribution; 1211051Sandreas.hansson@arm.com * neither the name of the copyright holders nor the names of its 1311051Sandreas.hansson@arm.com * contributors may be used to endorse or promote products derived from 1411051Sandreas.hansson@arm.com * this software without specific prior written permission. 1511051Sandreas.hansson@arm.com * 162810Srdreslin@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 172810Srdreslin@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 182810Srdreslin@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 192810Srdreslin@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 202810Srdreslin@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 212810Srdreslin@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 222810Srdreslin@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 232810Srdreslin@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 242810Srdreslin@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 252810Srdreslin@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 262810Srdreslin@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272810Srdreslin@umich.edu */ 282810Srdreslin@umich.edu 292810Srdreslin@umich.edu#ifndef __ARCH_ALPHA_SYSTEM_HH__ 302810Srdreslin@umich.edu#define __ARCH_ALPHA_SYSTEM_HH__ 312810Srdreslin@umich.edu 322810Srdreslin@umich.edu#include <string> 332810Srdreslin@umich.edu#include <vector> 342810Srdreslin@umich.edu 352810Srdreslin@umich.edu#include "sim/system.hh" 362810Srdreslin@umich.edu#include "base/loader/symtab.hh" 372810Srdreslin@umich.edu#include "cpu/pc_event.hh" 382810Srdreslin@umich.edu#include "kern/system_events.hh" 392810Srdreslin@umich.edu#include "sim/sim_object.hh" 402810Srdreslin@umich.edu 412810Srdreslin@umich.educlass AlphaSystem : public System 4211051Sandreas.hansson@arm.com{ 4311051Sandreas.hansson@arm.com public: 442810Srdreslin@umich.edu struct Params : public System::Params 4511051Sandreas.hansson@arm.com { 4611051Sandreas.hansson@arm.com std::string console_path; 472810Srdreslin@umich.edu std::string palcode; 482810Srdreslin@umich.edu std::string boot_osflags; 492810Srdreslin@umich.edu uint64_t system_type; 502810Srdreslin@umich.edu uint64_t system_rev; 5111051Sandreas.hansson@arm.com }; 522810Srdreslin@umich.edu 532810Srdreslin@umich.edu AlphaSystem(Params *p); 5411051Sandreas.hansson@arm.com 552810Srdreslin@umich.edu ~AlphaSystem(); 5611051Sandreas.hansson@arm.com 5711051Sandreas.hansson@arm.com virtual bool breakpoint(); 5811051Sandreas.hansson@arm.com 5911051Sandreas.hansson@arm.com/** 6011051Sandreas.hansson@arm.com * Serialization stuff 6111051Sandreas.hansson@arm.com */ 6211051Sandreas.hansson@arm.com public: 6311051Sandreas.hansson@arm.com virtual void serialize(std::ostream &os); 6411051Sandreas.hansson@arm.com virtual void unserialize(Checkpoint *cp, const std::string §ion); 6511051Sandreas.hansson@arm.com 6611053Sandreas.hansson@arm.com /** 6711053Sandreas.hansson@arm.com * Set the m5AlphaAccess pointer in the console 6811051Sandreas.hansson@arm.com */ 6911051Sandreas.hansson@arm.com void setAlphaAccess(Addr access); 7011051Sandreas.hansson@arm.com 7111051Sandreas.hansson@arm.com /** console symbol table */ 7211051Sandreas.hansson@arm.com SymbolTable *consoleSymtab; 7311051Sandreas.hansson@arm.com 7411051Sandreas.hansson@arm.com /** pal symbol table */ 7511051Sandreas.hansson@arm.com SymbolTable *palSymtab; 7611051Sandreas.hansson@arm.com 7711051Sandreas.hansson@arm.com /** Object pointer for the console code */ 7811051Sandreas.hansson@arm.com ObjectFile *console; 7911051Sandreas.hansson@arm.com 8011051Sandreas.hansson@arm.com /** Object pointer for the PAL code */ 8111051Sandreas.hansson@arm.com ObjectFile *pal; 8211051Sandreas.hansson@arm.com 8311051Sandreas.hansson@arm.com#ifndef NDEBUG 8411051Sandreas.hansson@arm.com /** Event to halt the simulator if the console calls panic() */ 8511051Sandreas.hansson@arm.com BreakPCEvent *consolePanicEvent; 8611051Sandreas.hansson@arm.com#endif 8711051Sandreas.hansson@arm.com protected: 8811051Sandreas.hansson@arm.com const Params *params() const { return (const Params *)_params; } 8911051Sandreas.hansson@arm.com 9011051Sandreas.hansson@arm.com /** Add a function-based event to PALcode. */ 9111051Sandreas.hansson@arm.com template <class T> 9211051Sandreas.hansson@arm.com T *AlphaSystem::addPalFuncEvent(const char *lbl) 9311051Sandreas.hansson@arm.com { 9411051Sandreas.hansson@arm.com return addFuncEvent<T>(palSymtab, lbl); 9511051Sandreas.hansson@arm.com } 9611051Sandreas.hansson@arm.com 9711051Sandreas.hansson@arm.com /** Add a function-based event to the console code. */ 9811051Sandreas.hansson@arm.com template <class T> 9911051Sandreas.hansson@arm.com T *AlphaSystem::addConsoleFuncEvent(const char *lbl) 10011051Sandreas.hansson@arm.com { 10111051Sandreas.hansson@arm.com return addFuncEvent<T>(consoleSymtab, lbl); 10211051Sandreas.hansson@arm.com } 10311051Sandreas.hansson@arm.com 10411051Sandreas.hansson@arm.com virtual Addr fixFuncEventAddr(Addr addr); 10511051Sandreas.hansson@arm.com 10611051Sandreas.hansson@arm.com}; 10711051Sandreas.hansson@arm.com 10811051Sandreas.hansson@arm.com#endif 10911051Sandreas.hansson@arm.com 11011051Sandreas.hansson@arm.com