| 732 | } |
| 733 | |
| 734 | static uint32_t ide_data_readw(void *opaque, uint32_t offset, int size_log2) |
| 735 | { |
| 736 | IDEIFState *s1 = opaque; |
| 737 | IDEState *s = s1->cur_drive; |
| 738 | int p, ret; |
| 739 | uint8_t *tab; |
| 740 | |
| 741 | if (!s) { |
| 742 | ret = 0; |
| 743 | } else { |
| 744 | p = s->data_index; |
| 745 | tab = s->io_buffer; |
| 746 | ret = tab[p] | (tab[p + 1] << 8); |
| 747 | p += 2; |
| 748 | s->data_index = p; |
| 749 | if (p >= s->data_end) |
| 750 | s->end_transfer_func(s); |
| 751 | } |
| 752 | return ret; |
| 753 | } |
| 754 | |
| 755 | static IDEState *ide_drive_init(IDEIFState *ide_if, BlockDevice *bs) |
| 756 | { |
nothing calls this directly
no outgoing calls
no test coverage detected