@@ -196,20 +196,24 @@ DRESULT disk_read(BYTE pdrv, BYTE *buff, DWORD sector, UINT count)
196
196
{
197
197
debug_if (FFS_DBG, " disk_read(sector %d, count %d) on pdrv [%d]\n " , sector, count, pdrv);
198
198
DWORD ssize = disk_get_sector_size (pdrv);
199
- int err = _ffs[pdrv]->read (buff, sector*ssize, count*ssize);
199
+ bd_addr_t addr = (bd_addr_t )sector*ssize;
200
+ bd_size_t size = (bd_size_t )count*ssize;
201
+ int err = _ffs[pdrv]->read (buff, addr, size);
200
202
return err ? RES_PARERR : RES_OK;
201
203
}
202
204
203
205
DRESULT disk_write (BYTE pdrv, const BYTE *buff, DWORD sector, UINT count)
204
206
{
205
207
debug_if (FFS_DBG, " disk_write(sector %d, count %d) on pdrv [%d]\n " , sector, count, pdrv);
206
208
DWORD ssize = disk_get_sector_size (pdrv);
207
- int err = _ffs[pdrv]->erase (sector*ssize, count*ssize);
209
+ bd_addr_t addr = (bd_addr_t )sector*ssize;
210
+ bd_size_t size = (bd_size_t )count*ssize;
211
+ int err = _ffs[pdrv]->erase (addr, size);
208
212
if (err) {
209
213
return RES_PARERR;
210
214
}
211
215
212
- err = _ffs[pdrv]->program (buff, sector*ssize, count*ssize );
216
+ err = _ffs[pdrv]->program (buff, addr, size );
213
217
if (err) {
214
218
return RES_PARERR;
215
219
}
@@ -250,7 +254,9 @@ DRESULT disk_ioctl(BYTE pdrv, BYTE cmd, void *buff)
250
254
} else {
251
255
DWORD *sectors = (DWORD*)buff;
252
256
DWORD ssize = disk_get_sector_size (pdrv);
253
- int err = _ffs[pdrv]->trim (sectors[0 ]*ssize, (sectors[1 ]-sectors[0 ]+1 )*ssize);
257
+ bd_addr_t addr = (bd_addr_t )sectors[0 ]*ssize;
258
+ bd_size_t size = (bd_size_t )(sectors[1 ]-sectors[0 ]+1 )*ssize;
259
+ int err = _ffs[pdrv]->trim (addr, size);
254
260
return err ? RES_PARERR : RES_OK;
255
261
}
256
262
}
0 commit comments