system.hh revision 2665:a124942bacb8
112647Santhony.gutierrez@amd.com/*
212647Santhony.gutierrez@amd.com * Copyright (c) 2002-2005 The Regents of The University of Michigan
311308Santhony.gutierrez@amd.com * All rights reserved.
412647Santhony.gutierrez@amd.com *
511308Santhony.gutierrez@amd.com * Redistribution and use in source and binary forms, with or without
612647Santhony.gutierrez@amd.com * modification, are permitted provided that the following conditions are
712647Santhony.gutierrez@amd.com * met: redistributions of source code must retain the above copyright
811308Santhony.gutierrez@amd.com * notice, this list of conditions and the following disclaimer;
912647Santhony.gutierrez@amd.com * redistributions in binary form must reproduce the above copyright
1012647Santhony.gutierrez@amd.com * notice, this list of conditions and the following disclaimer in the
1111308Santhony.gutierrez@amd.com * documentation and/or other materials provided with the distribution;
1212647Santhony.gutierrez@amd.com * neither the name of the copyright holders nor the names of its
1312647Santhony.gutierrez@amd.com * contributors may be used to endorse or promote products derived from
1412647Santhony.gutierrez@amd.com * this software without specific prior written permission.
1511308Santhony.gutierrez@amd.com *
1612647Santhony.gutierrez@amd.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1712647Santhony.gutierrez@amd.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1812647Santhony.gutierrez@amd.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1911308Santhony.gutierrez@amd.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2012647Santhony.gutierrez@amd.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2112647Santhony.gutierrez@amd.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2212647Santhony.gutierrez@amd.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2312647Santhony.gutierrez@amd.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2412647Santhony.gutierrez@amd.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2512647Santhony.gutierrez@amd.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2612647Santhony.gutierrez@amd.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2712647Santhony.gutierrez@amd.com *
2812647Santhony.gutierrez@amd.com * Authors: Ali Saidi
2912647Santhony.gutierrez@amd.com */
3012647Santhony.gutierrez@amd.com
3111308Santhony.gutierrez@amd.com#ifndef __ARCH_SPARC_SYSTEM_HH__
3212647Santhony.gutierrez@amd.com#define __ARCH_SPARC_SYSTEM_HH__
3311308Santhony.gutierrez@amd.com
3411308Santhony.gutierrez@amd.com#include <string>
3511308Santhony.gutierrez@amd.com#include <vector>
3611308Santhony.gutierrez@amd.com
3711308Santhony.gutierrez@amd.com#include "base/loader/symtab.hh"
3813400Sodanrc@yahoo.com.br#include "cpu/pc_event.hh"
3911308Santhony.gutierrez@amd.com#include "kern/system_events.hh"
4011308Santhony.gutierrez@amd.com#include "sim/sim_object.hh"
4111308Santhony.gutierrez@amd.com#include "sim/system.hh"
4213400Sodanrc@yahoo.com.br
4313400Sodanrc@yahoo.com.brclass SparcSystem : public System
4411670Sandreas.hansson@arm.com{
4511670Sandreas.hansson@arm.com  public:
4611308Santhony.gutierrez@amd.com    struct Params : public System::Params
4711308Santhony.gutierrez@amd.com    {
4811308Santhony.gutierrez@amd.com        std::string reset_bin;
4911308Santhony.gutierrez@amd.com        std::string hypervison_bin;
5011308Santhony.gutierrez@amd.com        std::string openboot_bin;
5111308Santhony.gutierrez@amd.com        std::string boot_osflags;
5211308Santhony.gutierrez@amd.com        uint64_t system_type;
5311308Santhony.gutierrez@amd.com        uint64_t system_rev;
5411308Santhony.gutierrez@amd.com    };
5511308Santhony.gutierrez@amd.com
5611308Santhony.gutierrez@amd.com    SparcSystem(Params *p);
5711308Santhony.gutierrez@amd.com
5811308Santhony.gutierrez@amd.com    ~SparcSystem();
5911308Santhony.gutierrez@amd.com
6011308Santhony.gutierrez@amd.com    virtual bool breakpoint();
6111308Santhony.gutierrez@amd.com
6211308Santhony.gutierrez@amd.com/**
6311308Santhony.gutierrez@amd.com * Serialization stuff
6411308Santhony.gutierrez@amd.com */
6511308Santhony.gutierrez@amd.com  public:
6611308Santhony.gutierrez@amd.com    virtual void serialize(std::ostream &os);
6711308Santhony.gutierrez@amd.com    virtual void unserialize(Checkpoint *cp, const std::string &section);
6811308Santhony.gutierrez@amd.com
6911308Santhony.gutierrez@amd.com    /** reset binary symbol table */
7011308Santhony.gutierrez@amd.com    SymbolTable *resetSymtab;
7111308Santhony.gutierrez@amd.com
7211308Santhony.gutierrez@amd.com    /** hypervison binary symbol table */
7311308Santhony.gutierrez@amd.com    SymbolTable *hypervisorSymtab;
7411308Santhony.gutierrez@amd.com
7511308Santhony.gutierrez@amd.com    /** openboot symbol table */
7611308Santhony.gutierrez@amd.com    SymbolTable *openbootSymtab;
7711308Santhony.gutierrez@amd.com
7811308Santhony.gutierrez@amd.com    /** Object pointer for the reset binary */
7911308Santhony.gutierrez@amd.com    ObjectFile *reset;
8011308Santhony.gutierrez@amd.com
8111308Santhony.gutierrez@amd.com    /** Object pointer for the hypervisor code */
8211308Santhony.gutierrez@amd.com    ObjectFile *hypervisor;
8311308Santhony.gutierrez@amd.com
8411308Santhony.gutierrez@amd.com    /** Object pointer for the openboot code */
8511308Santhony.gutierrez@amd.com    ObjectFile *openboot;
8611308Santhony.gutierrez@amd.com
8711308Santhony.gutierrez@amd.com    /** System Tick for syncronized tick across all cpus. */
8811308Santhony.gutierrez@amd.com    Tick sysTick;
8911308Santhony.gutierrez@amd.com
9011308Santhony.gutierrez@amd.com  protected:
9111308Santhony.gutierrez@amd.com    const Params *params() const { return (const Params *)_params; }
9211308Santhony.gutierrez@amd.com
9311308Santhony.gutierrez@amd.com    /** Add a function-based event to reset binary. */
9411308Santhony.gutierrez@amd.com    template <class T>
9511308Santhony.gutierrez@amd.com    T *SparcSystem::addResetFuncEvent(const char *lbl)
9611308Santhony.gutierrez@amd.com    {
9711308Santhony.gutierrez@amd.com        return addFuncEvent<T>(resetSymtab, lbl);
9811308Santhony.gutierrez@amd.com    }
9911308Santhony.gutierrez@amd.com
10011308Santhony.gutierrez@amd.com    /** Add a function-based event to the hypervisor. */
10111308Santhony.gutierrez@amd.com    template <class T>
10211308Santhony.gutierrez@amd.com    T *SparcSystem::addHypervisorFuncEvent(const char *lbl)
10311308Santhony.gutierrez@amd.com    {
10411308Santhony.gutierrez@amd.com        return addFuncEvent<T>(hypervisorSymtab, lbl);
10511308Santhony.gutierrez@amd.com    }
10611308Santhony.gutierrez@amd.com
10711308Santhony.gutierrez@amd.com    /** Add a function-based event to the openboot. */
10811308Santhony.gutierrez@amd.com    template <class T>
10911308Santhony.gutierrez@amd.com    T *SparcSystem::addOpenbootFuncEvent(const char *lbl)
11011308Santhony.gutierrez@amd.com    {
11111308Santhony.gutierrez@amd.com        return addFuncEvent<T>(openbootSymtab, lbl);
11211308Santhony.gutierrez@amd.com    }
11311308Santhony.gutierrez@amd.com
11411308Santhony.gutierrez@amd.com    virtual Addr fixFuncEventAddr(Addr addr);
11511308Santhony.gutierrez@amd.com
11611308Santhony.gutierrez@amd.com};
11711308Santhony.gutierrez@amd.com
11811308Santhony.gutierrez@amd.com#endif
11911308Santhony.gutierrez@amd.com
12011308Santhony.gutierrez@amd.com