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 &section);
1063630Sgblack@eecs.umich.edu};
1073630Sgblack@eecs.umich.edu
1083630Sgblack@eecs.umich.edu#endif // __DEV_T1000_HH__
109