Mercurial > ecos
changeset 2318:6d4c075d2939
* src/ide_disk.c (ide_read_sector, ide_write_sector): Length
is counted in sectors now, not bytes (due to change in io/disk
API).
| author | jlarmour |
|---|---|
| date | Fri, 17 Nov 2006 18:04:43 +0000 |
| parents | ce093f7a0343 |
| children | 8f44705956b2 |
| files | packages/devs/disk/ide/current/ChangeLog packages/devs/disk/ide/current/src/ide_disk.c |
| diffstat | 2 files changed, 12 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/devs/disk/ide/current/ChangeLog +++ b/packages/devs/disk/ide/current/ChangeLog @@ -1,3 +1,9 @@ +2006-11-17 Jonathan Larmour <jifl@eCosCentric.com> + + * src/ide_disk.c (ide_read_sector, ide_write_sector): Length + is counted in sectors now, not bytes (due to change in io/disk + API). + 2006-09-21 Jonathan Larmour <jifl@eCosCentric.com> * src/ide_disk.h: DISK_FUNS is now implicitly static. @@ -36,7 +42,7 @@ 2004-10-16 Iztok Zupet <iz@elsis.si> // ------------------------------------------- // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. -// Copyright (C) 2004 eCosCentric, Ltd. +// Copyright (C) 2004, 2006 eCosCentric, Ltd. // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free
--- a/packages/devs/disk/ide/current/src/ide_disk.c +++ b/packages/devs/disk/ide/current/src/ide_disk.c @@ -9,7 +9,7 @@ // ------------------------------------------- // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. -// Copyright (C) 2004 eCosCentric, Ltd. +// Copyright (C) 2004, 2006 eCosCentric, Ltd. // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free @@ -264,8 +264,8 @@ ide_read_sector(int ctlr, int dev, cyg_u for (j = 0, c=0 ; j < (CYGDAT_DEVS_DISK_IDE_SECTOR_SIZE / sizeof(cyg_uint16)); j++) { HAL_IDE_READ_UINT16(ctlr, IDE_REG_DATA, p); - if (c++<len) *b++=p&0xff; - if (c++<len) *b++=(p>>8)&0xff; + if (c++<(len*512)) *b++=p&0xff; + if (c++<(len*512)) *b++=(p>>8)&0xff; } return 1; } @@ -298,8 +298,8 @@ ide_write_sector(int ctlr, int dev, cyg_ // for (j = 0, c=0 ; j < (CYGDAT_DEVS_DISK_IDE_SECTOR_SIZE / sizeof(cyg_uint16)); j++) { - p = (c++<len) ? *b++ : 0; - p |= (c++<len) ? (*b++<<8) : 0; + p = (c++<(len*512)) ? *b++ : 0; + p |= (c++<(len*512)) ? (*b++<<8) : 0; HAL_IDE_WRITE_UINT16(ctlr, IDE_REG_DATA, p); } return 1;
