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