diff options
| author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-28 03:39:39 +0100 |
|---|---|---|
| committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-28 03:39:39 +0100 |
| commit | f9b9cab6a17e446b243da154050a9d4b6b4dad15 (patch) | |
| tree | b1debeaf6d695daea411565fd4154079796004a9 | |
| parent | 8f3595e05852e17af29c36445cb4939cf9ccb0cd (diff) | |
| download | plan9front-f9b9cab6a17e446b243da154050a9d4b6b4dad15.tar.xz | |
sdide: confusion
| -rw-r--r-- | sys/src/9/pc/sdide.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/src/9/pc/sdide.c b/sys/src/9/pc/sdide.c index 3d94cd77f..583bde63c 100644 --- a/sys/src/9/pc/sdide.c +++ b/sys/src/9/pc/sdide.c @@ -1066,7 +1066,7 @@ static int atapktio0(Drive *drive, SDreq *r) { uchar *cmd; - int as, cmdport, ctlport, rv; + int as, len, cmdport, ctlport, rv; Ctlr *ctlr; rv = SDok; @@ -1074,8 +1074,6 @@ atapktio0(Drive *drive, SDreq *r) drive->command = Cpkt; memmove(drive->pktcmd, cmd, r->clen); memset(drive->pktcmd+r->clen, 0, drive->pkt-r->clen); - if(drive->dlen > 0x8000) - drive->dlen = 0x8000; drive->limit = drive->data+drive->dlen; ctlr = drive->ctlr; @@ -1092,11 +1090,12 @@ atapktio0(Drive *drive, SDreq *r) drive->pktdma = Dma; else drive->pktdma = 0; + len = drive->secsize > 0 ? 16*drive->secsize : 0x8000; outb(cmdport+Features, drive->pktdma); outb(cmdport+Count, 0); outb(cmdport+Sector, 0); - outb(cmdport+Bytelo, drive->dlen); - outb(cmdport+Bytehi, drive->dlen>>8); + outb(cmdport+Bytelo, len); + outb(cmdport+Bytehi, len>>8); outb(cmdport+Dh, drive->dev); ctlr->done = 0; ctlr->curdrive = drive; |
