x86: Adjust the size of the values written to the x87 misc registers
[gem5.git] / src / dev / ide_disk.hh
index 78a9e1fe7ba05fb943ddc47df75a4f8b4f28cb32..6ccca985eba3c50b43dcc5467dc2dad47000dbef 100644 (file)
@@ -1,4 +1,16 @@
 /*
+ * Copyright (c) 2013 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder.  You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
  * Copyright (c) 2004-2005 The Regents of The University of Michigan
  * All rights reserved.
  *
 #include "dev/ide_ctrl.hh"
 #include "dev/ide_wdcreg.h"
 #include "dev/io_device.hh"
-#include "sim/eventq.hh"
 #include "params/IdeDisk.hh"
-
+#include "sim/eventq.hh"
 
 class ChunkGenerator;
 
-#define DMA_BACKOFF_PERIOD 200
+#define DMA_BACKOFF_PERIOD      200
 
-#define MAX_DMA_SIZE    (131072)  // 128K
-#define MAX_MULTSECT    (128)
+#define MAX_DMA_SIZE            0x20000  // 128K
+#define MAX_SINGLE_DMA_SIZE     0x10000
+#define MAX_MULTSECT            (128)
 
 #define PRD_BASE_MASK  0xfffffffe
 #define PRD_COUNT_MASK 0xfffe
@@ -73,7 +85,7 @@ class PrdTableEntry {
 
     uint32_t getByteCount()
     {
-        return ((entry.byteCount == 0) ? MAX_DMA_SIZE :
+        return ((entry.byteCount == 0) ? MAX_SINGLE_DMA_SIZE :
                 (entry.byteCount & PRD_COUNT_MASK));
     }
 
@@ -177,7 +189,8 @@ typedef enum DevState {
 
     // DMA protocol
     Prepare_Data_Dma,
-    Transfer_Data_Dma
+    Transfer_Data_Dma,
+    Device_Dma_Abort
 } DevState_t;
 
 typedef enum DmaState {
@@ -186,7 +199,6 @@ typedef enum DmaState {
     Dma_Transfer
 } DmaState_t;
 
-class PhysicalMemory;
 class IdeController;
 
 /**
@@ -237,6 +249,8 @@ class IdeDisk : public SimObject
     int devID;
     /** Interrupt pending */
     bool intrPending;
+    /** DMA Aborted */
+    bool dmaAborted;
 
     Stats::Scalar dmaReadFullPages;
     Stats::Scalar dmaReadBytes;