system.hh revision 75
17506Stjones1@inf.ed.ac.uk/* 27506Stjones1@inf.ed.ac.uk * Copyright (c) 2003 The Regents of The University of Michigan 37506Stjones1@inf.ed.ac.uk * All rights reserved. 47506Stjones1@inf.ed.ac.uk * 57506Stjones1@inf.ed.ac.uk * Redistribution and use in source and binary forms, with or without 67506Stjones1@inf.ed.ac.uk * modification, are permitted provided that the following conditions are 77506Stjones1@inf.ed.ac.uk * met: redistributions of source code must retain the above copyright 87506Stjones1@inf.ed.ac.uk * notice, this list of conditions and the following disclaimer; 97506Stjones1@inf.ed.ac.uk * redistributions in binary form must reproduce the above copyright 107506Stjones1@inf.ed.ac.uk * notice, this list of conditions and the following disclaimer in the 117506Stjones1@inf.ed.ac.uk * documentation and/or other materials provided with the distribution; 127506Stjones1@inf.ed.ac.uk * neither the name of the copyright holders nor the names of its 137506Stjones1@inf.ed.ac.uk * contributors may be used to endorse or promote products derived from 147506Stjones1@inf.ed.ac.uk * this software without specific prior written permission. 157506Stjones1@inf.ed.ac.uk * 167506Stjones1@inf.ed.ac.uk * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 177506Stjones1@inf.ed.ac.uk * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 187506Stjones1@inf.ed.ac.uk * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 197506Stjones1@inf.ed.ac.uk * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 207506Stjones1@inf.ed.ac.uk * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 217506Stjones1@inf.ed.ac.uk * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 227506Stjones1@inf.ed.ac.uk * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 237506Stjones1@inf.ed.ac.uk * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 247506Stjones1@inf.ed.ac.uk * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 257506Stjones1@inf.ed.ac.uk * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 267506Stjones1@inf.ed.ac.uk * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 277506Stjones1@inf.ed.ac.uk */ 287506Stjones1@inf.ed.ac.uk 297506Stjones1@inf.ed.ac.uk#ifndef __SYSTEM_HH__ 307506Stjones1@inf.ed.ac.uk#define __SYSTEM_HH__ 317506Stjones1@inf.ed.ac.uk 327506Stjones1@inf.ed.ac.uk#include <string> 337506Stjones1@inf.ed.ac.uk#include <vector> 347506Stjones1@inf.ed.ac.uk 357506Stjones1@inf.ed.ac.uk#include "sim/sim_object.hh" 3611793Sbrandon.potter@amd.com#include "cpu/pc_event.hh" 377698SAli.Saidi@ARM.com#include "base/loader/symtab.hh" 387506Stjones1@inf.ed.ac.uk 397506Stjones1@inf.ed.ac.ukclass MemoryController; 407506Stjones1@inf.ed.ac.ukclass PhysicalMemory; 417506Stjones1@inf.ed.ac.ukclass RemoteGDB; 427506Stjones1@inf.ed.ac.ukclass GDBListener; 437506Stjones1@inf.ed.ac.uk 447506Stjones1@inf.ed.ac.ukclass ExecContext; 457506Stjones1@inf.ed.ac.uk 467506Stjones1@inf.ed.ac.ukclass System : public SimObject 477506Stjones1@inf.ed.ac.uk{ 487506Stjones1@inf.ed.ac.uk private: 497506Stjones1@inf.ed.ac.uk 507506Stjones1@inf.ed.ac.uk SymbolTable *kernelSymtab; 517506Stjones1@inf.ed.ac.uk SymbolTable *consoleSymtab; 529920Syasuko.eckert@amd.com 539920Syasuko.eckert@amd.com BreakPCEvent kernel_panic_event; 549920Syasuko.eckert@amd.com BreakPCEvent console_panic_event; 557506Stjones1@inf.ed.ac.uk BadAddrEvent badaddr_event; 567506Stjones1@inf.ed.ac.uk SkipFuncEvent skip_power_state; 577506Stjones1@inf.ed.ac.uk SkipFuncEvent skip_scavenge_boot; 587506Stjones1@inf.ed.ac.uk PrintfEvent printf_event; 597720Sgblack@eecs.umich.edu DebugPrintfEvent debug_printf_event; 607506Stjones1@inf.ed.ac.uk DebugPrintfEvent debug_printfr_event; 617506Stjones1@inf.ed.ac.uk DumpMbufEvent dump_mbuf_event; 628787Sgblack@eecs.umich.edu 638787Sgblack@eecs.umich.edu RegFile *initRegs; 648787Sgblack@eecs.umich.edu 658787Sgblack@eecs.umich.edu Addr kernelStart; 668787Sgblack@eecs.umich.edu Addr kernelEnd; 678787Sgblack@eecs.umich.edu Addr kernelEntry; 688787Sgblack@eecs.umich.edu 697693SAli.Saidi@ARM.com public: 707693SAli.Saidi@ARM.com 717693SAli.Saidi@ARM.com MemoryController *memCtrl; 727693SAli.Saidi@ARM.com PhysicalMemory *physmem; 737693SAli.Saidi@ARM.com 747693SAli.Saidi@ARM.com PCEventQueue pcEventQueue; 758791Sgblack@eecs.umich.edu 768791Sgblack@eecs.umich.edu std::vector<ExecContext *> xcvec; 778791Sgblack@eecs.umich.edu 788791Sgblack@eecs.umich.edu RemoteGDB *remoteGDB; 798791Sgblack@eecs.umich.edu GDBListener *gdbListen; 808791Sgblack@eecs.umich.edu 817693SAli.Saidi@ARM.com System(const std::string name, 827811Ssteve.reinhardt@amd.com MemoryController *, PhysicalMemory *, 83 const std::string &kernel_path, const std::string &console_path, 84 const std::string &palcode, const std::string &boot_osflags); 85 86 ~System(); 87 88 const SymbolTable *getKernelSymtab() const { return kernelSymtab; } 89 const SymbolTable *getConsoleSymtab() const { return consoleSymtab; } 90 91 Addr getKernelStart() const { return kernelStart; } 92 Addr getKernelEnd() const { return kernelEnd; } 93 Addr getKernelEntry() const { return kernelEntry; } 94 95 void initBootContext(ExecContext *xc); 96 void registerExecContext(ExecContext *xc); 97 98 //////////////////////////////////////////// 99 // 100 // STATIC GLOBAL SYSTEM LIST 101 // 102 //////////////////////////////////////////// 103 104 public: 105 106 static std::vector<System *> systemList; 107 108 static int numSystemsRunning; 109 110 static void printSystems(); 111}; 112 113#endif // __SYSTEM_HH__ 114