Show
Ignore:
Timestamp:
02/25/09 01:21:12 (3 years ago)
Author:
mwhitworth
Message:

Move ind/inw reading code to AtaDataRead function, let ATA disk code use it, check against drive->totalSectors for out of bound I/O, and misc formatting.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Whitix/trunk/devices/storage/ata/ata-disk.c

    r1885 r1916  
    2828{ 
    2929        struct Request* request=StorageGetCurrRequest(drive->sDev); 
    30         WORD* p=(WORD*)request->data; 
     30        BYTE* p=(WORD*)request->data; 
    3131        int i; 
    3232 
    3333        if (!request) 
    34         { 
    35                 KePrint("AtaRwInterrupt: request is null?\n"); 
    3634                return; 
    37         } 
    3835 
    39         if (status & STATE_ERR || status & STATE_DF) 
     36        if ( (status & STATE_ERR) || (status & STATE_DF)) 
    4037        { 
    4138                KePrint("AtaRwInterrupt: failure reading sector %u\n",request->sector); 
     
    5350                        return; 
    5451                } 
    55  
    56                 for (i=0; i<256; i++) 
    57                         p[i]=inw(CTRL_REG(drive->parent,REG_DATA)); 
     52                 
     53                AtaDataRead(drive, p, 512); 
    5854        } 
    5955 
     
    7773        /* If the request is out of bounds, notify the request code and process 
    7874         * another request. */ 
    79         if (request->sector > (drive->cyls*drive->heads*drive->sectors)) 
     75        if (request->sector > drive->totalSectors) 
    8076                return AtaFinishRequest(drive, -EIO); 
    8177         
     
    8682        command.count=1; /* For now */ 
    8783 
    88         drive->interrupt=AtaRwInterrupt; 
     84        drive->interrupt = AtaRwInterrupt; 
    8985        err=AtaSendCommand(drive,&command); 
    9086