32 int timeout = 1000000;
36 assert(timeout > 0,
"ide: drive stuck busy");
40 assert(status != 0xFF,
"ide: no drive detected");
78 for (
int i = 0; i < 256; i++) {
118 for (
int i = 0; i < 256; i++) {
156 int timeout = 1000000;
159 if (status & 0x01)
return 0;
161 }
while (!(status & 0x08) && timeout > 0);
163 if (timeout == 0)
return 0;
167 for (
int i = 0; i < 256; i++) {
173 *secs = identify[60] | (identify[61] << 16);
void __ideinit(void)
ideinit initializes the ide disk controller
void __iwrt(uint32_t lba, uint8_t *buff)
iwrt writes a single 512 byte sector to disk
void __irsec(uint32_t lba, uint8_t *buff)
irsec reads a single 512 byte sector from disk
int __idesize(uint32_t *secs)
idesize queries the ide drive for its total sector count
#define IDE_PRIMARY_CONTROL