Go to the documentation of this file.
34 #ifndef __DEV_STORAGE_IDE_CTRL_HH__
35 #define __DEV_STORAGE_IDE_CTRL_HH__
41 #include "params/IdeController.hh"
73 ConfigSpaceRegs(
const std::string &
name) :
80 addRegisters({primaryTiming, secondaryTiming, deviceTiming, raz0,
81 udmaControl, raz1, udmaTiming, raz2});
86 TimeRegWithDecodeEnabled = 0x8000
90 Register16 primaryTiming =
91 {
"primary timing", TimeRegWithDecodeEnabled};
92 Register16 secondaryTiming =
93 {
"secondary timing", TimeRegWithDecodeEnabled};
94 Register8 deviceTiming = {
"device timing"};
95 RegisterRaz raz0 = {
"raz0", 3};
96 Register8 udmaControl = {
"udma control"};
97 RegisterRaz raz1 = {
"raz1", 1};
98 Register16 udmaTiming = {
"udma timing"};
157 memset(
static_cast<void *
>(
this), 0,
sizeof(*
this));
217 #endif // __DEV_STORAGE_IDE_CTRL_HH_
void serialize(const std::string &base, std::ostream &os) const
IdeDisk * _selected
Currently selected disk.
RegisterBank< ByteOrder::little > RegisterBankLE
bool pendingInterrupt() const
void setDevice0(IdeDisk *disk)
IdeController * controller() const
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
void accessCommand(Addr offset, int size, uint8_t *data, bool read)
#define PCI_DEVICE_SPECIFIC
void unserialize(const std::string &base, CheckpointIn &cp)
IdeDisk * selected() const
Interface for things with names.
void accessControl(Addr offset, int size, uint8_t *data, bool read)
Registers used for bus master interface.
virtual std::string name() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void accessBMI(Addr offset, int size, uint8_t *data, bool read)
uint64_t Tick
Tick count type.
IdeController(const Params &p)
void dispatchAccess(PacketPtr pkt, bool read)
PCI device, base implementation is only config space.
Channel(std::string new_name, IdeController *new_ctrl, bool new_primary)
Device model for an Intel PIIX4 IDE controller.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Tick readConfig(PacketPtr pkt) override
Read from the PCI config space data that is stored locally.
BitUnion8(BMIStatusReg) Bitfield< 6 > dmaCap0
struct gem5::IdeController::Channel::BMIRegs bmiRegs
void serialize(CheckpointOut &cp) const override
Serialize this object to the given output stream.
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
virtual void clearInterrupt(bool is_primary)
virtual void postInterrupt(bool is_primary)
EndBitUnion(BMICommandReg) class ConfigSpaceRegs ConfigSpaceRegs configSpaceRegs
Registers used in device specific PCI configuration.
void unserialize(CheckpointIn &cp) override
Reconstruct the state of this object from a checkpoint.
std::ostream CheckpointOut
IdeDisk * device0
IDE disks connected to this controller For more details about device0 and device1 see: https://en....
Tick writeConfig(PacketPtr pkt) override
Write to the PCI config space data that is stored locally.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
EndBitUnion(BMIStatusReg) BitUnion8(BMICommandReg) Bitfield< 3 > rw
void setDevice1(IdeDisk *disk)
void select(bool select_device_1)
Generated on Wed Jul 13 2022 10:39:21 for gem5 by doxygen 1.8.17