| 452 | } |
| 453 | |
| 454 | static void ide_sector_write_cb2(void *opaque, int ret) |
| 455 | { |
| 456 | IDEState *s = opaque; |
| 457 | int n; |
| 458 | |
| 459 | n = s->io_nb_sectors; |
| 460 | ide_set_sector(s, ide_get_sector(s) + n); |
| 461 | s->nsector = (s->nsector - n) & 0xff; |
| 462 | if (s->nsector == 0) { |
| 463 | /* no more sectors to write */ |
| 464 | s->status = READY_STAT | SEEK_STAT; |
| 465 | } else { |
| 466 | n = s->nsector; |
| 467 | if (n > s->req_nb_sectors) |
| 468 | n = s->req_nb_sectors; |
| 469 | s->io_nb_sectors = n; |
| 470 | ide_transfer_start(s, 512 * n, ide_sector_write_cb1); |
| 471 | s->status = READY_STAT | SEEK_STAT | DRQ_STAT; |
| 472 | } |
| 473 | ide_set_irq(s); |
| 474 | } |
| 475 | |
| 476 | static void ide_sector_write(IDEState *s) |
| 477 | { |
no test coverage detected