|
gem5
|
Device model for an IDE disk. More...
#include "base/statistics.hh"#include "dev/io_device.hh"#include "dev/storage/disk_image.hh"#include "dev/storage/ide_atareg.h"#include "dev/storage/ide_ctrl.hh"#include "dev/storage/ide_wdcreg.h"#include "params/IdeDisk.hh"#include "sim/eventq.hh"Go to the source code of this file.
Classes | |
| struct | PrdEntry |
| class | PrdTableEntry |
| struct | CommandReg |
| class | IdeDisk |
| IDE Disk device model. More... | |
Macros | |
| #define | DMA_BACKOFF_PERIOD 200 |
| #define | MAX_DMA_SIZE 0x20000 |
| #define | MAX_SINGLE_DMA_SIZE 0x10000 |
| #define | MAX_MULTSECT (128) |
| #define | PRD_BASE_MASK 0xfffffffe |
| #define | PRD_COUNT_MASK 0xfffe |
| #define | PRD_EOT_MASK 0x8000 |
| #define | DATA_OFFSET (0) |
| #define | ERROR_OFFSET (1) |
| #define | FEATURES_OFFSET (1) |
| #define | NSECTOR_OFFSET (2) |
| #define | SECTOR_OFFSET (3) |
| #define | LCYL_OFFSET (4) |
| #define | HCYL_OFFSET (5) |
| #define | SELECT_OFFSET (6) |
| #define | DRIVE_OFFSET (6) |
| #define | STATUS_OFFSET (7) |
| #define | COMMAND_OFFSET (7) |
| #define | CONTROL_OFFSET (2) |
| #define | ALTSTAT_OFFSET (2) |
| #define | SELECT_DEV_BIT 0x10 |
| #define | CONTROL_RST_BIT 0x04 |
| #define | CONTROL_IEN_BIT 0x02 |
| #define | STATUS_BSY_BIT 0x80 |
| #define | STATUS_DRDY_BIT 0x40 |
| #define | STATUS_DRQ_BIT 0x08 |
| #define | STATUS_SEEK_BIT 0x10 |
| #define | STATUS_DF_BIT 0x20 |
| #define | DRIVE_LBA_BIT 0x40 |
| #define | DEV0 (0) |
| #define | DEV1 (1) |
Typedefs | |
| typedef struct PrdEntry | PrdEntry_t |
| typedef struct CommandReg | CommandReg_t |
| typedef enum Events | Events_t |
| typedef enum DevAction | DevAction_t |
| typedef enum DevState | DevState_t |
| typedef enum DmaState | DmaState_t |
Enumerations | |
| enum | Events { None = 0, Transfer, ReadWait, WriteWait, PrdRead, DmaRead, DmaWrite } |
| enum | DevAction { ACT_NONE = 0, ACT_CMD_WRITE, ACT_CMD_COMPLETE, ACT_CMD_ERROR, ACT_SELECT_WRITE, ACT_STAT_READ, ACT_DATA_READY, ACT_DATA_READ_BYTE, ACT_DATA_READ_SHORT, ACT_DATA_WRITE_BYTE, ACT_DATA_WRITE_SHORT, ACT_DMA_READY, ACT_DMA_DONE, ACT_SRST_SET, ACT_SRST_CLEAR } |
| enum | DevState { Device_Idle_S = 0, Device_Idle_SI, Device_Idle_NS, Device_Srst, Command_Execution, Prepare_Data_In, Data_Ready_INTRQ_In, Transfer_Data_In, Prepare_Data_Out, Data_Ready_INTRQ_Out, Transfer_Data_Out, Prepare_Data_Dma, Transfer_Data_Dma, Device_Dma_Abort } |
| enum | DmaState { Dma_Idle = 0, Dma_Start, Dma_Transfer } |
Device model for an IDE disk.
Definition in file ide_disk.hh.
| #define ALTSTAT_OFFSET (2) |
Definition at line 111 of file ide_disk.hh.
Referenced by IdeDisk::readControl().
| #define COMMAND_OFFSET (7) |
Definition at line 108 of file ide_disk.hh.
Referenced by IdeDisk::writeCommand().
| #define CONTROL_IEN_BIT 0x02 |
Definition at line 115 of file ide_disk.hh.
Referenced by IdeDisk::writeControl().
| #define CONTROL_OFFSET (2) |
Definition at line 110 of file ide_disk.hh.
Referenced by IdeDisk::writeControl().
| #define CONTROL_RST_BIT 0x04 |
Definition at line 114 of file ide_disk.hh.
Referenced by IdeDisk::writeControl().
| #define DATA_OFFSET (0) |
Definition at line 98 of file ide_disk.hh.
Referenced by IdeDisk::readCommand(), and IdeDisk::writeCommand().
| #define DEV0 (0) |
Definition at line 123 of file ide_disk.hh.
Referenced by IdeDisk::reset().
| #define DEV1 (1) |
Definition at line 124 of file ide_disk.hh.
Referenced by IdeDisk::reset().
| #define DMA_BACKOFF_PERIOD 200 |
Definition at line 61 of file ide_disk.hh.
Referenced by IdeDisk::doDmaRead(), IdeDisk::doDmaTransfer(), and IdeDisk::doDmaWrite().
| #define DRIVE_LBA_BIT 0x40 |
Definition at line 121 of file ide_disk.hh.
Referenced by IdeDisk::startCommand().
| #define DRIVE_OFFSET (6) |
Definition at line 106 of file ide_disk.hh.
Referenced by IdeDisk::readCommand(), and IdeDisk::writeCommand().
| #define ERROR_OFFSET (1) |
Definition at line 99 of file ide_disk.hh.
Referenced by IdeDisk::readCommand().
| #define FEATURES_OFFSET (1) |
Definition at line 100 of file ide_disk.hh.
Referenced by IdeDisk::writeCommand().
| #define HCYL_OFFSET (5) |
Definition at line 104 of file ide_disk.hh.
Referenced by IdeDisk::readCommand(), and IdeDisk::writeCommand().
| #define LCYL_OFFSET (4) |
Definition at line 103 of file ide_disk.hh.
Referenced by IdeDisk::readCommand(), and IdeDisk::writeCommand().
| #define MAX_DMA_SIZE 0x20000 |
Definition at line 63 of file ide_disk.hh.
Referenced by IdeDisk::doDmaDataWrite(), IdeDisk::doDmaRead(), IdeDisk::doDmaWrite(), IdeDisk::reset(), IdeDisk::serialize(), IdeDisk::unserialize(), and IdeDisk::updateState().
| #define MAX_MULTSECT (128) |
Definition at line 65 of file ide_disk.hh.
Referenced by IdeDisk::IdeDisk().
| #define MAX_SINGLE_DMA_SIZE 0x10000 |
Definition at line 64 of file ide_disk.hh.
Referenced by PrdTableEntry::getByteCount().
| #define NSECTOR_OFFSET (2) |
Definition at line 101 of file ide_disk.hh.
Referenced by IdeDisk::readCommand(), and IdeDisk::writeCommand().
| #define PRD_BASE_MASK 0xfffffffe |
Definition at line 67 of file ide_disk.hh.
Referenced by PrdTableEntry::getBaseAddr().
| #define PRD_COUNT_MASK 0xfffe |
Definition at line 68 of file ide_disk.hh.
Referenced by PrdTableEntry::getByteCount().
| #define PRD_EOT_MASK 0x8000 |
Definition at line 69 of file ide_disk.hh.
Referenced by PrdTableEntry::getEOT().
| #define SECTOR_OFFSET (3) |
Definition at line 102 of file ide_disk.hh.
Referenced by IdeDisk::readCommand(), and IdeDisk::writeCommand().
| #define SELECT_DEV_BIT 0x10 |
Definition at line 113 of file ide_disk.hh.
| #define SELECT_OFFSET (6) |
Definition at line 105 of file ide_disk.hh.
| #define STATUS_BSY_BIT 0x80 |
Definition at line 116 of file ide_disk.hh.
Referenced by IdeDisk::isBSYSet(), IdeDisk::startCommand(), and IdeDisk::updateState().
| #define STATUS_DF_BIT 0x20 |
Definition at line 120 of file ide_disk.hh.
Referenced by IdeDisk::startCommand().
| #define STATUS_DRDY_BIT 0x40 |
Definition at line 117 of file ide_disk.hh.
Referenced by IdeDisk::reset(), and IdeDisk::setComplete().
| #define STATUS_DRQ_BIT 0x08 |
Definition at line 118 of file ide_disk.hh.
Referenced by IdeDisk::startCommand(), and IdeDisk::updateState().
| #define STATUS_OFFSET (7) |
Definition at line 107 of file ide_disk.hh.
Referenced by IdeDisk::readCommand().
| #define STATUS_SEEK_BIT 0x10 |
Definition at line 119 of file ide_disk.hh.
Referenced by IdeDisk::setComplete(), and IdeDisk::updateState().
| typedef struct CommandReg CommandReg_t |
| typedef enum DevAction DevAction_t |
| typedef enum DevState DevState_t |
| typedef enum DmaState DmaState_t |
| typedef struct PrdEntry PrdEntry_t |
| enum DevAction |
Definition at line 150 of file ide_disk.hh.
| enum DevState |
Definition at line 168 of file ide_disk.hh.
| enum DmaState |
| Enumerator | |
|---|---|
| Dma_Idle | |
| Dma_Start | |
| Dma_Transfer | |
Definition at line 196 of file ide_disk.hh.
| enum Events |
| Enumerator | |
|---|---|
| None | |
| Transfer | |
| ReadWait | |
| WriteWait | |
| PrdRead | |
| DmaRead | |
| DmaWrite | |
Definition at line 140 of file ide_disk.hh.