system.hh revision 8706
16019Shines@cs.fsu.edu/* 27093Sgblack@eecs.umich.edu * Copyright (c) 2007 The Hewlett-Packard Development Company 37093Sgblack@eecs.umich.edu * All rights reserved. 47093Sgblack@eecs.umich.edu * 57093Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall 67093Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual 77093Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating 87093Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software 97093Sgblack@eecs.umich.edu * licensed hereunder. You may use the software subject to the license 107093Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated 117093Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software, 127093Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form. 137093Sgblack@eecs.umich.edu * 146019Shines@cs.fsu.edu * Redistribution and use in source and binary forms, with or without 156019Shines@cs.fsu.edu * modification, are permitted provided that the following conditions are 166019Shines@cs.fsu.edu * met: redistributions of source code must retain the above copyright 176019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer; 186019Shines@cs.fsu.edu * redistributions in binary form must reproduce the above copyright 196019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer in the 206019Shines@cs.fsu.edu * documentation and/or other materials provided with the distribution; 216019Shines@cs.fsu.edu * neither the name of the copyright holders nor the names of its 226019Shines@cs.fsu.edu * contributors may be used to endorse or promote products derived from 236019Shines@cs.fsu.edu * this software without specific prior written permission. 246019Shines@cs.fsu.edu * 256019Shines@cs.fsu.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 266019Shines@cs.fsu.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 276019Shines@cs.fsu.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 286019Shines@cs.fsu.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 296019Shines@cs.fsu.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 306019Shines@cs.fsu.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 316019Shines@cs.fsu.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 326019Shines@cs.fsu.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 336019Shines@cs.fsu.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 346019Shines@cs.fsu.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 356019Shines@cs.fsu.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 366019Shines@cs.fsu.edu * 376019Shines@cs.fsu.edu * Authors: Gabe Black 386019Shines@cs.fsu.edu */ 396019Shines@cs.fsu.edu 406019Shines@cs.fsu.edu#ifndef __ARCH_X86_SYSTEM_HH__ 416735Sgblack@eecs.umich.edu#define __ARCH_X86_SYSTEM_HH__ 426735Sgblack@eecs.umich.edu 436019Shines@cs.fsu.edu#include <string> 446019Shines@cs.fsu.edu#include <vector> 456019Shines@cs.fsu.edu 466019Shines@cs.fsu.edu#include "base/loader/symtab.hh" 476019Shines@cs.fsu.edu#include "cpu/pc_event.hh" 486019Shines@cs.fsu.edu#include "kern/system_events.hh" 496019Shines@cs.fsu.edu#include "params/X86System.hh" 506019Shines@cs.fsu.edu#include "sim/sim_object.hh" 516019Shines@cs.fsu.edu#include "sim/system.hh" 526019Shines@cs.fsu.edu 537362Sgblack@eecs.umich.edunamespace X86ISA 546735Sgblack@eecs.umich.edu{ 556019Shines@cs.fsu.edu namespace SMBios 567362Sgblack@eecs.umich.edu { 576735Sgblack@eecs.umich.edu class SMBiosTable; 586019Shines@cs.fsu.edu } 597362Sgblack@eecs.umich.edu namespace IntelMP 606735Sgblack@eecs.umich.edu { 616019Shines@cs.fsu.edu class FloatingPointer; 627362Sgblack@eecs.umich.edu class ConfigTable; 636735Sgblack@eecs.umich.edu } 646019Shines@cs.fsu.edu} 657362Sgblack@eecs.umich.edu 666735Sgblack@eecs.umich.educlass X86System : public System 676019Shines@cs.fsu.edu{ 687362Sgblack@eecs.umich.edu public: 696735Sgblack@eecs.umich.edu typedef X86SystemParams Params; 706019Shines@cs.fsu.edu X86System(Params *p); 717362Sgblack@eecs.umich.edu ~X86System(); 726735Sgblack@eecs.umich.edu 736019Shines@cs.fsu.edu/** 746735Sgblack@eecs.umich.edu * Serialization stuff 757362Sgblack@eecs.umich.edu */ 766735Sgblack@eecs.umich.edu public: 776735Sgblack@eecs.umich.edu void serialize(std::ostream &os); 786019Shines@cs.fsu.edu void unserialize(Checkpoint *cp, const std::string §ion); 796735Sgblack@eecs.umich.edu 807400SAli.Saidi@ARM.com void initState(); 816735Sgblack@eecs.umich.edu 826735Sgblack@eecs.umich.edu protected: 836735Sgblack@eecs.umich.edu 847400SAli.Saidi@ARM.com X86ISA::SMBios::SMBiosTable * smbiosTable; 856735Sgblack@eecs.umich.edu X86ISA::IntelMP::FloatingPointer * mpFloatingPointer; 866735Sgblack@eecs.umich.edu X86ISA::IntelMP::ConfigTable * mpConfigTable; 876735Sgblack@eecs.umich.edu X86ISA::ACPI::RSDP * rsdp; 886019Shines@cs.fsu.edu 896019Shines@cs.fsu.edu void writeOutSMBiosTable(Addr header, 906019Shines@cs.fsu.edu Addr &headerSize, Addr &tableSize, Addr table = 0); 916735Sgblack@eecs.umich.edu 926735Sgblack@eecs.umich.edu void writeOutMPTable(Addr fp, 936735Sgblack@eecs.umich.edu Addr &fpSize, Addr &tableSize, Addr table = 0); 947362Sgblack@eecs.umich.edu 956019Shines@cs.fsu.edu const Params *params() const { return (const Params *)_params; } 966735Sgblack@eecs.umich.edu 976735Sgblack@eecs.umich.edu virtual Addr fixFuncEventAddr(Addr addr) 986735Sgblack@eecs.umich.edu { 996019Shines@cs.fsu.edu //XXX This may eventually have to do something useful. 1006735Sgblack@eecs.umich.edu return addr; 1016735Sgblack@eecs.umich.edu } 1026735Sgblack@eecs.umich.edu}; 1036735Sgblack@eecs.umich.edu 1046735Sgblack@eecs.umich.edu#endif 1056735Sgblack@eecs.umich.edu 1066735Sgblack@eecs.umich.edu