system.hh revision 2158
18981Sandreas.hansson@arm.com/* 213573Ssascha.bischoff@arm.com * Copyright (c) 2002-2005 The Regents of The University of Michigan 311804Srjthakur@google.com * All rights reserved. 411904Spierre-yves.peneau@lirmm.fr * 511804Srjthakur@google.com * Redistribution and use in source and binary forms, with or without 68981Sandreas.hansson@arm.com * modification, are permitted provided that the following conditions are 78981Sandreas.hansson@arm.com * met: redistributions of source code must retain the above copyright 88981Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer; 98981Sandreas.hansson@arm.com * redistributions in binary form must reproduce the above copyright 108981Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer in the 118981Sandreas.hansson@arm.com * documentation and/or other materials provided with the distribution; 128981Sandreas.hansson@arm.com * neither the name of the copyright holders nor the names of its 138981Sandreas.hansson@arm.com * contributors may be used to endorse or promote products derived from 148981Sandreas.hansson@arm.com * this software without specific prior written permission. 158981Sandreas.hansson@arm.com * 168981Sandreas.hansson@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 178981Sandreas.hansson@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 188981Sandreas.hansson@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 198981Sandreas.hansson@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 208981Sandreas.hansson@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218981Sandreas.hansson@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 228981Sandreas.hansson@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238981Sandreas.hansson@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248981Sandreas.hansson@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258981Sandreas.hansson@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 268981Sandreas.hansson@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278981Sandreas.hansson@arm.com */ 288981Sandreas.hansson@arm.com 298981Sandreas.hansson@arm.com#ifndef __ARCH_ALPHA_SYSTEM_HH__ 308981Sandreas.hansson@arm.com#define __ARCH_ALPHA_SYSTEM_HH__ 318981Sandreas.hansson@arm.com 328981Sandreas.hansson@arm.com#include <string> 338981Sandreas.hansson@arm.com#include <vector> 348981Sandreas.hansson@arm.com 358981Sandreas.hansson@arm.com#include "sim/system.hh" 368981Sandreas.hansson@arm.com#include "base/loader/symtab.hh" 378981Sandreas.hansson@arm.com#include "cpu/pc_event.hh" 388981Sandreas.hansson@arm.com#include "kern/system_events.hh" 398981Sandreas.hansson@arm.com#include "sim/sim_object.hh" 408981Sandreas.hansson@arm.com 4111804Srjthakur@google.comclass AlphaSystem : public System 4211904Spierre-yves.peneau@lirmm.fr{ 438981Sandreas.hansson@arm.com public: 448981Sandreas.hansson@arm.com struct Params : public System::Params 458981Sandreas.hansson@arm.com { 468981Sandreas.hansson@arm.com std::string console_path; 478981Sandreas.hansson@arm.com std::string palcode; 488981Sandreas.hansson@arm.com std::string boot_osflags; 498981Sandreas.hansson@arm.com uint64_t system_type; 508981Sandreas.hansson@arm.com uint64_t system_rev; 5110994Sandreas.sandberg@arm.com }; 528981Sandreas.hansson@arm.com 538981Sandreas.hansson@arm.com AlphaSystem(Params *p); 548981Sandreas.hansson@arm.com 558981Sandreas.hansson@arm.com ~AlphaSystem(); 568981Sandreas.hansson@arm.com 578981Sandreas.hansson@arm.com virtual bool breakpoint(); 588981Sandreas.hansson@arm.com 598981Sandreas.hansson@arm.com/** 608981Sandreas.hansson@arm.com * Serialization stuff 618981Sandreas.hansson@arm.com */ 628981Sandreas.hansson@arm.com public: 638981Sandreas.hansson@arm.com virtual void serialize(std::ostream &os); 648981Sandreas.hansson@arm.com virtual void unserialize(Checkpoint *cp, const std::string §ion); 658981Sandreas.hansson@arm.com 668981Sandreas.hansson@arm.com /** 6710902Sandreas.sandberg@arm.com * Set the m5AlphaAccess pointer in the console 688981Sandreas.hansson@arm.com */ 698981Sandreas.hansson@arm.com void setAlphaAccess(Addr access); 708981Sandreas.hansson@arm.com 718981Sandreas.hansson@arm.com /** console symbol table */ 728981Sandreas.hansson@arm.com SymbolTable *consoleSymtab; 738981Sandreas.hansson@arm.com 748981Sandreas.hansson@arm.com /** pal symbol table */ 758981Sandreas.hansson@arm.com SymbolTable *palSymtab; 768981Sandreas.hansson@arm.com 778981Sandreas.hansson@arm.com /** Object pointer for the console code */ 788981Sandreas.hansson@arm.com ObjectFile *console; 798981Sandreas.hansson@arm.com 808981Sandreas.hansson@arm.com /** Object pointer for the PAL code */ 8111168Sandreas.hansson@arm.com ObjectFile *pal; 8211168Sandreas.hansson@arm.com 8311168Sandreas.hansson@arm.com#ifndef NDEBUG 8411168Sandreas.hansson@arm.com /** Event to halt the simulator if the console calls panic() */ 858981Sandreas.hansson@arm.com BreakPCEvent *consolePanicEvent; 8610902Sandreas.sandberg@arm.com#endif 8713784Sgabeblack@google.com protected: 8813784Sgabeblack@google.com const Params *params() const { return (const Params *)_params; } 898981Sandreas.hansson@arm.com 908981Sandreas.hansson@arm.com /** Add a function-based event to PALcode. */ 918981Sandreas.hansson@arm.com template <class T> 928981Sandreas.hansson@arm.com T *AlphaSystem::addPalFuncEvent(const char *lbl) 938981Sandreas.hansson@arm.com { 948981Sandreas.hansson@arm.com return addFuncEvent<T>(palSymtab, lbl); 958981Sandreas.hansson@arm.com } 968981Sandreas.hansson@arm.com 978981Sandreas.hansson@arm.com /** Add a function-based event to the console code. */ 988981Sandreas.hansson@arm.com template <class T> 998981Sandreas.hansson@arm.com T *AlphaSystem::addConsoleFuncEvent(const char *lbl) 1008981Sandreas.hansson@arm.com { 1018981Sandreas.hansson@arm.com return addFuncEvent<T>(consoleSymtab, lbl); 1029542Sandreas.hansson@arm.com } 1039542Sandreas.hansson@arm.com 1048981Sandreas.hansson@arm.com virtual Addr fixFuncEventAddr(Addr addr); 1058981Sandreas.hansson@arm.com 1068981Sandreas.hansson@arm.com}; 1079542Sandreas.hansson@arm.com 1089542Sandreas.hansson@arm.com#endif 1098981Sandreas.hansson@arm.com 1108981Sandreas.hansson@arm.com