MCPcopy Create free account
hub / github.com/ading2210/linuxpdf / ide_exec_cmd

Function ide_exec_cmd

tinyemu/ide.c:495–564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

493}
494
495static void ide_exec_cmd(IDEState *s, int val)
496{
497#if defined(DEBUG_IDE)
498 printf("ide: exec_cmd=0x%02x\n", val);
499#endif
500 switch(val) {
501 case WIN_IDENTIFY:
502 ide_identify(s);
503 s->status = READY_STAT | SEEK_STAT | DRQ_STAT;
504 ide_transfer_start(s, 512, ide_identify_cb);
505 ide_set_irq(s);
506 break;
507 case WIN_SPECIFY:
508 case WIN_RECAL:
509 s->error = 0;
510 s->status = READY_STAT | SEEK_STAT;
511 ide_set_irq(s);
512 break;
513 case WIN_SETMULT:
514 if (s->nsector > MAX_MULT_SECTORS ||
515 (s->nsector & (s->nsector - 1)) != 0) {
516 ide_abort_command(s);
517 } else {
518 s->mult_sectors = s->nsector;
519#if defined(DEBUG_IDE)
520 printf("ide: setmult=%d\n", s->mult_sectors);
521#endif
522 s->status = READY_STAT;
523 }
524 ide_set_irq(s);
525 break;
526 case WIN_READ:
527 case WIN_READ_ONCE:
528 s->req_nb_sectors = 1;
529 ide_sector_read(s);
530 break;
531 case WIN_WRITE:
532 case WIN_WRITE_ONCE:
533 s->req_nb_sectors = 1;
534 ide_sector_write(s);
535 break;
536 case WIN_MULTREAD:
537 if (!s->mult_sectors) {
538 ide_abort_command(s);
539 ide_set_irq(s);
540 } else {
541 s->req_nb_sectors = s->mult_sectors;
542 ide_sector_read(s);
543 }
544 break;
545 case WIN_MULTWRITE:
546 if (!s->mult_sectors) {
547 ide_abort_command(s);
548 ide_set_irq(s);
549 } else {
550 s->req_nb_sectors = s->mult_sectors;
551 ide_sector_write(s);
552 }

Callers 1

ide_ioport_writeFunction · 0.85

Calls 7

ide_identifyFunction · 0.85
ide_transfer_startFunction · 0.85
ide_set_irqFunction · 0.85
ide_abort_commandFunction · 0.85
ide_sector_readFunction · 0.85
ide_sector_writeFunction · 0.85
ide_set_sectorFunction · 0.85

Tested by

no test coverage detected