dev-arm: Add a VExpress_GEM5_V2 platform with GICv3 support
[gem5.git] / src / dev / platform.hh
index bfc229748f7533449dc30feb87fc4fe4ad7c8eb5..9e2aee82b7f2a11e8abd468ea7b15007fd748f67 100644 (file)
@@ -26,6 +26,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * Authors: Andrew Schultz
+ *          Nathan Binkert
  */
 
 /**
 #ifndef __DEV_PLATFORM_HH__
 #define __DEV_PLATFORM_HH__
 
+#include <bitset>
+#include <set>
+
+#include "params/Platform.hh"
 #include "sim/sim_object.hh"
-#include "arch/isa_traits.hh"
 
-class PciConfigAll;
 class IntrControl;
-class SimConsole;
+class Terminal;
 class Uart;
 class System;
 
+
 class Platform : public SimObject
 {
   public:
     /** Pointer to the interrupt controller */
     IntrControl *intrctrl;
 
-    /** Pointer to the PCI configuration space */
-    PciConfigAll *pciconfig;
-
-    /** Pointer to the UART, set by the uart */
-    Uart *uart;
-
-    /** Pointer to the system for info about the memory system. */
-    System *system;
-
   public:
-    Platform(const std::string &name, IntrControl *intctrl);
+    typedef PlatformParams Params;
+    Platform(const Params *p);
     virtual ~Platform();
-    virtual void init() { if (pciconfig == NULL) panic("PCI Config not set"); }
+
+    /**
+     * Cause the cpu to post a serial interrupt to the CPU.
+     */
     virtual void postConsoleInt() = 0;
+
+    /**
+     * Clear a posted CPU interrupt
+     */
     virtual void clearConsoleInt() = 0;
-    virtual Tick intrFrequency() = 0;
+
+
+    /**
+     * Cause the chipset to post a cpi interrupt to the CPU.
+     */
     virtual void postPciInt(int line);
+
+    /**
+     * Clear a posted PCI->CPU interrupt
+     */
     virtual void clearPciInt(int line);
-    virtual Addr pciToDma(Addr pciAddr) const;
 };
 
 #endif // __DEV_PLATFORM_HH__