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 §ion); 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