system.hh revision 9292
14484Sbinkertn@umich.edu/* 24484Sbinkertn@umich.edu * Copyright (c) 2010 ARM Limited 34484Sbinkertn@umich.edu * All rights reserved 44484Sbinkertn@umich.edu * 54484Sbinkertn@umich.edu * The license below extends only to copyright in the software and shall 64484Sbinkertn@umich.edu * not be construed as granting a license to any other intellectual 74484Sbinkertn@umich.edu * property including but not limited to intellectual property relating 84484Sbinkertn@umich.edu * to a hardware implementation of the functionality of the software 94484Sbinkertn@umich.edu * licensed hereunder. You may use the software subject to the license 104484Sbinkertn@umich.edu * terms below provided that you ensure that this notice is replicated 114484Sbinkertn@umich.edu * unmodified and in its entirety in all distributions of the software, 124484Sbinkertn@umich.edu * modified or unmodified, in source code or in binary form. 134484Sbinkertn@umich.edu * 144484Sbinkertn@umich.edu * Copyright (c) 2002-2005 The Regents of The University of Michigan 154484Sbinkertn@umich.edu * All rights reserved. 164484Sbinkertn@umich.edu * 174484Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without 184484Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are 194484Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright 204484Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer; 214484Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright 224484Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the 234484Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution; 244484Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its 254484Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from 264484Sbinkertn@umich.edu * this software without specific prior written permission. 274484Sbinkertn@umich.edu * 284484Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 294484Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 304484Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 314494Ssaidi@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 324484Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 336121Snate@binkert.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 344484Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 354484Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 364484Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 374484Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 384781Snate@binkert.org * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 394484Sbinkertn@umich.edu * 404484Sbinkertn@umich.edu * Authors: Ali Saidi 414484Sbinkertn@umich.edu */ 424484Sbinkertn@umich.edu 434484Sbinkertn@umich.edu#ifndef __ARCH_ARM_SYSTEM_HH__ 444484Sbinkertn@umich.edu#define __ARCH_ARM_SYSTEM_HH__ 454484Sbinkertn@umich.edu 464484Sbinkertn@umich.edu#include <string> 474484Sbinkertn@umich.edu#include <vector> 484484Sbinkertn@umich.edu 494484Sbinkertn@umich.edu#include "kern/linux/events.hh" 504484Sbinkertn@umich.edu#include "params/ArmSystem.hh" 514484Sbinkertn@umich.edu#include "sim/sim_object.hh" 524484Sbinkertn@umich.edu#include "sim/system.hh" 534484Sbinkertn@umich.edu 544484Sbinkertn@umich.educlass ArmSystem : public System 554484Sbinkertn@umich.edu{ 564484Sbinkertn@umich.edu protected: 574484Sbinkertn@umich.edu /** 584484Sbinkertn@umich.edu * PC based event to skip the dprink() call and emulate its 594484Sbinkertn@umich.edu * functionality 604484Sbinkertn@umich.edu */ 614484Sbinkertn@umich.edu Linux::DebugPrintkEvent *debugPrintkEvent; 624484Sbinkertn@umich.edu 634484Sbinkertn@umich.edu /** 644484Sbinkertn@umich.edu * Pointer to the bootloader object 654484Sbinkertn@umich.edu */ 664484Sbinkertn@umich.edu ObjectFile *bootldr; 674484Sbinkertn@umich.edu 684484Sbinkertn@umich.edu public: 694484Sbinkertn@umich.edu typedef ArmSystemParams Params; 704484Sbinkertn@umich.edu const Params * 714484Sbinkertn@umich.edu params() const 724484Sbinkertn@umich.edu { 734484Sbinkertn@umich.edu return dynamic_cast<const Params *>(_params); 744484Sbinkertn@umich.edu } 754484Sbinkertn@umich.edu 764484Sbinkertn@umich.edu ArmSystem(Params *p); 774484Sbinkertn@umich.edu ~ArmSystem(); 784484Sbinkertn@umich.edu 794484Sbinkertn@umich.edu /** 804484Sbinkertn@umich.edu * Initialise the system 814484Sbinkertn@umich.edu */ 824484Sbinkertn@umich.edu virtual void initState(); 834484Sbinkertn@umich.edu 844484Sbinkertn@umich.edu /** Check if an address should be uncacheable until all caches are enabled. 854484Sbinkertn@umich.edu * This exits because coherence on some addresses at boot is maintained via 864484Sbinkertn@umich.edu * sw coherence until the caches are enbaled. Since we don't support sw 874484Sbinkertn@umich.edu * coherence operations in gem5, this is a method that allows a system 884484Sbinkertn@umich.edu * type to designate certain addresses that should remain uncachebale 894484Sbinkertn@umich.edu * for a while. 906121Snate@binkert.org */ 916121Snate@binkert.org virtual bool adderBootUncacheable(Addr a) { return false; } 926121Snate@binkert.org 935765Snate@binkert.org virtual Addr fixFuncEventAddr(Addr addr) 945765Snate@binkert.org { 955765Snate@binkert.org // Remove the low bit that thumb symbols have set 965397Ssaidi@eecs.umich.edu // but that aren't actually odd aligned 975274Ssaidi@eecs.umich.edu if (addr & 0x1) 984494Ssaidi@eecs.umich.edu return addr & ~1; 994504Ssaidi@eecs.umich.edu return addr; 1004494Ssaidi@eecs.umich.edu } 1014494Ssaidi@eecs.umich.edu 1024496Ssaidi@eecs.umich.edu /** true if this a multiprocessor system */ 1034504Ssaidi@eecs.umich.edu bool multiProc; 1044504Ssaidi@eecs.umich.edu}; 1054500Sbinkertn@umich.edu 1064500Sbinkertn@umich.edu#endif 1074496Ssaidi@eecs.umich.edu 1084496Ssaidi@eecs.umich.edu