make ide disk work for newmem
SConscript:
compile ide devices
base/chunk_generator.hh:
add another parameter to the chuck generator called complete() which
returns the number of bytes transfered so far. Very useful for
adding to a pointer.
configs/test/fs.py:
Add ide disk to fs test configuration
dev/ide_ctrl.cc:
dev/ide_ctrl.hh:
dev/ide_disk.cc:
dev/ide_disk.hh:
dev/io_device.cc:
dev/io_device.hh:
dev/pciconfigall.cc:
dev/pciconfigall.hh:
dev/pcidev.cc:
dev/pcidev.hh:
update for new memory system
mem/bus.cc:
support devices that return multiple ranges
remove old ranges before using new info
mem/packet.hh:
make senderstate void* per steve's request that we use every
construct possible in C++
mem/physical.cc:
have memory stamp the packet with the time.
mem/physical.hh:
actually set the memory latency variable
python/m5/objects/Device.py:
Add DmaDevice
python/m5/objects/Ide.py:
Ide disk no longer has a physmem pointer
python/m5/objects/Pci.py:
update pci device for newmem
python/m5/objects/PhysicalMemory.py:
add latency parameter for physical memory
sim/byteswap.hh:
use fast architecture dependent byteswap calls if they exist
--HG--
extra : convert_revision : e3cf2e8f61064ad302d94bc22010a00c59f3f793
This commit is contained in:
@@ -70,6 +70,13 @@
|
||||
#define IDE_CTRL_CONF_START 0x40
|
||||
#define IDE_CTRL_CONF_END ((IDE_CTRL_CONF_START) + sizeof(config_regs))
|
||||
|
||||
#define IDE_CTRL_CONF_PRIM_TIMING 0x40
|
||||
#define IDE_CTRL_CONF_SEC_TIMING 0x42
|
||||
#define IDE_CTRL_CONF_DEV_TIMING 0x44
|
||||
#define IDE_CTRL_CONF_UDMA_CNTRL 0x48
|
||||
#define IDE_CTRL_CONF_UDMA_TIMING 0x4A
|
||||
#define IDE_CTRL_CONF_IDE_CONFIG 0x54
|
||||
|
||||
|
||||
enum IdeRegType {
|
||||
COMMAND_BLOCK,
|
||||
@@ -77,13 +84,9 @@ enum IdeRegType {
|
||||
BMI_BLOCK
|
||||
};
|
||||
|
||||
class BaseInterface;
|
||||
class Bus;
|
||||
class HierParams;
|
||||
class IdeDisk;
|
||||
class IntrControl;
|
||||
class PciConfigAll;
|
||||
class PhysicalMemory;
|
||||
class Platform;
|
||||
|
||||
/**
|
||||
@@ -191,10 +194,6 @@ class IdeController : public PciDev
|
||||
{
|
||||
/** Array of disk objects */
|
||||
std::vector<IdeDisk *> disks;
|
||||
Bus *pio_bus;
|
||||
Bus *dma_bus;
|
||||
Tick pio_latency;
|
||||
HierParams *hier;
|
||||
};
|
||||
const Params *params() const { return (const Params *)_params; }
|
||||
|
||||
@@ -202,26 +201,28 @@ class IdeController : public PciDev
|
||||
IdeController(Params *p);
|
||||
~IdeController();
|
||||
|
||||
virtual void writeConfig(int offset, int size, const uint8_t *data);
|
||||
virtual void readConfig(int offset, int size, uint8_t *data);
|
||||
virtual void writeConfig(int offset, const uint8_t data);
|
||||
virtual void writeConfig(int offset, const uint16_t data);
|
||||
virtual void writeConfig(int offset, const uint32_t data);
|
||||
virtual void readConfig(int offset, uint8_t *data);
|
||||
virtual void readConfig(int offset, uint16_t *data);
|
||||
virtual void readConfig(int offset, uint32_t *data);
|
||||
|
||||
void setDmaComplete(IdeDisk *disk);
|
||||
|
||||
/**
|
||||
* Read a done field for a given target.
|
||||
* @param req Contains the address of the field to read.
|
||||
* @param data Return the field read.
|
||||
* @return The fault condition of the access.
|
||||
* @param pkt Packet describing what is to be read
|
||||
* @return The amount of time to complete this request
|
||||
*/
|
||||
virtual Fault read(MemReqPtr &req, uint8_t *data);
|
||||
virtual Tick read(Packet &pkt);
|
||||
|
||||
/**
|
||||
* Write to the mmapped I/O control registers.
|
||||
* @param req Contains the address to write to.
|
||||
* @param data The data to write.
|
||||
* @return The fault condition of the access.
|
||||
* Write a done field for a given target.
|
||||
* @param pkt Packet describing what is to be written
|
||||
* @return The amount of time to complete this request
|
||||
*/
|
||||
virtual Fault write(MemReqPtr &req, const uint8_t *data);
|
||||
virtual Tick write(Packet &pkt);
|
||||
|
||||
/**
|
||||
* Serialize this object to the given output stream.
|
||||
@@ -236,11 +237,5 @@ class IdeController : public PciDev
|
||||
*/
|
||||
virtual void unserialize(Checkpoint *cp, const std::string §ion);
|
||||
|
||||
/**
|
||||
* Return how long this access will take.
|
||||
* @param req the memory request to calcuate
|
||||
* @return Tick when the request is done
|
||||
*/
|
||||
Tick cacheAccess(MemReqPtr &req);
|
||||
};
|
||||
#endif // __IDE_CTRL_HH_
|
||||
|
||||
Reference in New Issue
Block a user