t1000.hh revision 3630
13630Sgblack@eecs.umich.edu/* 23630Sgblack@eecs.umich.edu * Copyright (c) 2004-2005 The Regents of The University of Michigan 33630Sgblack@eecs.umich.edu * All rights reserved. 43630Sgblack@eecs.umich.edu * 53630Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 63630Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 73630Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 83630Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 93630Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 103630Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 113630Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 123630Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 133630Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 143630Sgblack@eecs.umich.edu * this software without specific prior written permission. 153630Sgblack@eecs.umich.edu * 163630Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 173630Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 183630Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 193630Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 203630Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 213630Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 223630Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 233630Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 243630Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 253630Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 263630Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 273630Sgblack@eecs.umich.edu * 283630Sgblack@eecs.umich.edu * Authors: Ali Saidi 293630Sgblack@eecs.umich.edu */ 303630Sgblack@eecs.umich.edu 313630Sgblack@eecs.umich.edu/** 323630Sgblack@eecs.umich.edu * @file 333630Sgblack@eecs.umich.edu * Declaration of top level class for the Tsunami chipset. This class just 343630Sgblack@eecs.umich.edu * retains pointers to all its children so the children can communicate. 353630Sgblack@eecs.umich.edu */ 363630Sgblack@eecs.umich.edu 373630Sgblack@eecs.umich.edu#ifndef __DEV_T1000_HH__ 383630Sgblack@eecs.umich.edu#define __DEV_T1000_HH__ 393630Sgblack@eecs.umich.edu 403630Sgblack@eecs.umich.edu#include "dev/platform.hh" 413630Sgblack@eecs.umich.edu 423630Sgblack@eecs.umich.educlass IdeController; 433630Sgblack@eecs.umich.educlass System; 443630Sgblack@eecs.umich.edu 453630Sgblack@eecs.umich.educlass T1000 : public Platform 463630Sgblack@eecs.umich.edu{ 473630Sgblack@eecs.umich.edu public: 483630Sgblack@eecs.umich.edu /** Pointer to the system */ 493630Sgblack@eecs.umich.edu System *system; 503630Sgblack@eecs.umich.edu 513630Sgblack@eecs.umich.edu public: 523630Sgblack@eecs.umich.edu /** 533630Sgblack@eecs.umich.edu * Constructor for the Tsunami Class. 543630Sgblack@eecs.umich.edu * @param name name of the object 553630Sgblack@eecs.umich.edu * @param s system the object belongs to 563630Sgblack@eecs.umich.edu * @param intctrl pointer to the interrupt controller 573630Sgblack@eecs.umich.edu */ 583630Sgblack@eecs.umich.edu T1000(const std::string &name, System *s, IntrControl *intctrl); 593630Sgblack@eecs.umich.edu 603630Sgblack@eecs.umich.edu /** 613630Sgblack@eecs.umich.edu * Return the interrupting frequency to AlphaAccess 623630Sgblack@eecs.umich.edu * @return frequency of RTC interrupts 633630Sgblack@eecs.umich.edu */ 643630Sgblack@eecs.umich.edu virtual Tick intrFrequency(); 653630Sgblack@eecs.umich.edu 663630Sgblack@eecs.umich.edu /** 673630Sgblack@eecs.umich.edu * Cause the cpu to post a serial interrupt to the CPU. 683630Sgblack@eecs.umich.edu */ 693630Sgblack@eecs.umich.edu virtual void postConsoleInt(); 703630Sgblack@eecs.umich.edu 713630Sgblack@eecs.umich.edu /** 723630Sgblack@eecs.umich.edu * Clear a posted CPU interrupt (id=55) 733630Sgblack@eecs.umich.edu */ 743630Sgblack@eecs.umich.edu virtual void clearConsoleInt(); 753630Sgblack@eecs.umich.edu 763630Sgblack@eecs.umich.edu /** 773630Sgblack@eecs.umich.edu * Cause the chipset to post a cpi interrupt to the CPU. 783630Sgblack@eecs.umich.edu */ 793630Sgblack@eecs.umich.edu virtual void postPciInt(int line); 803630Sgblack@eecs.umich.edu 813630Sgblack@eecs.umich.edu /** 823630Sgblack@eecs.umich.edu * Clear a posted PCI->CPU interrupt 833630Sgblack@eecs.umich.edu */ 843630Sgblack@eecs.umich.edu virtual void clearPciInt(int line); 853630Sgblack@eecs.umich.edu 863630Sgblack@eecs.umich.edu 873630Sgblack@eecs.umich.edu virtual Addr pciToDma(Addr pciAddr) const; 883630Sgblack@eecs.umich.edu 893630Sgblack@eecs.umich.edu /** 903630Sgblack@eecs.umich.edu * Calculate the configuration address given a bus/dev/func. 913630Sgblack@eecs.umich.edu */ 923630Sgblack@eecs.umich.edu virtual Addr calcConfigAddr(int bus, int dev, int func); 933630Sgblack@eecs.umich.edu 943630Sgblack@eecs.umich.edu /** 953630Sgblack@eecs.umich.edu * Serialize this object to the given output stream. 963630Sgblack@eecs.umich.edu * @param os The stream to serialize to. 973630Sgblack@eecs.umich.edu */ 983630Sgblack@eecs.umich.edu virtual void serialize(std::ostream &os); 993630Sgblack@eecs.umich.edu 1003630Sgblack@eecs.umich.edu /** 1013630Sgblack@eecs.umich.edu * Reconstruct the state of this object from a checkpoint. 1023630Sgblack@eecs.umich.edu * @param cp The checkpoint use. 1033630Sgblack@eecs.umich.edu * @param section The section name of this object 1043630Sgblack@eecs.umich.edu */ 1053630Sgblack@eecs.umich.edu virtual void unserialize(Checkpoint *cp, const std::string §ion); 1063630Sgblack@eecs.umich.edu}; 1073630Sgblack@eecs.umich.edu 1083630Sgblack@eecs.umich.edu#endif // __DEV_T1000_HH__ 109