platform.hh revision 2846
19616Sandreas.hansson@arm.com/* 29616Sandreas.hansson@arm.com * Copyright (c) 2004-2005 The Regents of The University of Michigan 39616Sandreas.hansson@arm.com * All rights reserved. 49616Sandreas.hansson@arm.com * 59616Sandreas.hansson@arm.com * Redistribution and use in source and binary forms, with or without 69616Sandreas.hansson@arm.com * modification, are permitted provided that the following conditions are 79616Sandreas.hansson@arm.com * met: redistributions of source code must retain the above copyright 89616Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer; 99616Sandreas.hansson@arm.com * redistributions in binary form must reproduce the above copyright 109616Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer in the 119616Sandreas.hansson@arm.com * documentation and/or other materials provided with the distribution; 129616Sandreas.hansson@arm.com * neither the name of the copyright holders nor the names of its 139616Sandreas.hansson@arm.com * contributors may be used to endorse or promote products derived from 149616Sandreas.hansson@arm.com * this software without specific prior written permission. 159616Sandreas.hansson@arm.com * 169616Sandreas.hansson@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 179616Sandreas.hansson@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 189616Sandreas.hansson@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 199616Sandreas.hansson@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 209616Sandreas.hansson@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 219616Sandreas.hansson@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 229616Sandreas.hansson@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 239616Sandreas.hansson@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 249616Sandreas.hansson@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 259616Sandreas.hansson@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 269616Sandreas.hansson@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 279616Sandreas.hansson@arm.com * 289616Sandreas.hansson@arm.com * Authors: Andrew Schultz 299616Sandreas.hansson@arm.com * Nathan Binkert 309616Sandreas.hansson@arm.com */ 319616Sandreas.hansson@arm.com 329616Sandreas.hansson@arm.com/** 339616Sandreas.hansson@arm.com * @file 349616Sandreas.hansson@arm.com * Generic interface for platforms 359616Sandreas.hansson@arm.com */ 369616Sandreas.hansson@arm.com 379616Sandreas.hansson@arm.com#ifndef __DEV_PLATFORM_HH__ 389616Sandreas.hansson@arm.com#define __DEV_PLATFORM_HH__ 399616Sandreas.hansson@arm.com 409616Sandreas.hansson@arm.com#include <bitset> 419616Sandreas.hansson@arm.com#include <set> 429616Sandreas.hansson@arm.com 439616Sandreas.hansson@arm.com#include "sim/sim_object.hh" 449616Sandreas.hansson@arm.com#include "arch/isa_traits.hh" 459616Sandreas.hansson@arm.com 469616Sandreas.hansson@arm.comclass PciConfigAll; 479616Sandreas.hansson@arm.comclass IntrControl; 489616Sandreas.hansson@arm.comclass SimConsole; 499616Sandreas.hansson@arm.comclass Uart; 509616Sandreas.hansson@arm.comclass System; 519616Sandreas.hansson@arm.com 529616Sandreas.hansson@arm.comclass Platform : public SimObject 539616Sandreas.hansson@arm.com{ 549616Sandreas.hansson@arm.com public: 559616Sandreas.hansson@arm.com /** Pointer to the interrupt controller */ 569616Sandreas.hansson@arm.com IntrControl *intrctrl; 579616Sandreas.hansson@arm.com 589616Sandreas.hansson@arm.com /** Pointer to the UART, set by the uart */ 599616Sandreas.hansson@arm.com Uart *uart; 609616Sandreas.hansson@arm.com 619616Sandreas.hansson@arm.com /** Pointer to the system for info about the memory system. */ 629616Sandreas.hansson@arm.com System *system; 639616Sandreas.hansson@arm.com 649616Sandreas.hansson@arm.com public: 659616Sandreas.hansson@arm.com Platform(const std::string &name, IntrControl *intctrl); 669616Sandreas.hansson@arm.com virtual ~Platform(); 679616Sandreas.hansson@arm.com virtual void postConsoleInt() = 0; 689616Sandreas.hansson@arm.com virtual void clearConsoleInt() = 0; 699616Sandreas.hansson@arm.com virtual Tick intrFrequency() = 0; 709616Sandreas.hansson@arm.com virtual void postPciInt(int line); 719616Sandreas.hansson@arm.com virtual void clearPciInt(int line); 729616Sandreas.hansson@arm.com virtual Addr pciToDma(Addr pciAddr) const; 739616Sandreas.hansson@arm.com virtual Addr calcConfigAddr(int bus, int dev, int func) = 0; 749616Sandreas.hansson@arm.com virtual void registerPciDevice(uint8_t bus, uint8_t dev, uint8_t func, 759616Sandreas.hansson@arm.com uint8_t intr); 769616Sandreas.hansson@arm.com 779616Sandreas.hansson@arm.com private: 789616Sandreas.hansson@arm.com std::bitset<256> intLines; 799616Sandreas.hansson@arm.com std::set<uint32_t> pciDevices; 809616Sandreas.hansson@arm.com 819616Sandreas.hansson@arm.com}; 829616Sandreas.hansson@arm.com 839616Sandreas.hansson@arm.com#endif // __DEV_PLATFORM_HH__ 849616Sandreas.hansson@arm.com