| .. | .. |
|---|
| 31 | 31 | #define CSW fd_routine[can_use_virtual_dma & 1] |
|---|
| 32 | 32 | |
|---|
| 33 | 33 | |
|---|
| 34 | | -#define fd_inb(port) inb_p(port) |
|---|
| 35 | | -#define fd_outb(value, port) outb_p(value, port) |
|---|
| 34 | +#define fd_inb(base, reg) inb_p((base) + (reg)) |
|---|
| 35 | +#define fd_outb(value, base, reg) outb_p(value, (base) + (reg)) |
|---|
| 36 | 36 | |
|---|
| 37 | 37 | #define fd_request_dma() CSW._request_dma(FLOPPY_DMA, "floppy") |
|---|
| 38 | 38 | #define fd_free_dma() CSW._free_dma(FLOPPY_DMA) |
|---|
| .. | .. |
|---|
| 77 | 77 | st = 1; |
|---|
| 78 | 78 | for (lcount = virtual_dma_count, lptr = virtual_dma_addr; |
|---|
| 79 | 79 | lcount; lcount--, lptr++) { |
|---|
| 80 | | - st = inb(virtual_dma_port + 4) & 0xa0; |
|---|
| 81 | | - if (st != 0xa0) |
|---|
| 80 | + st = inb(virtual_dma_port + FD_STATUS); |
|---|
| 81 | + st &= STATUS_DMA | STATUS_READY; |
|---|
| 82 | + if (st != (STATUS_DMA | STATUS_READY)) |
|---|
| 82 | 83 | break; |
|---|
| 83 | 84 | if (virtual_dma_mode) |
|---|
| 84 | | - outb_p(*lptr, virtual_dma_port + 5); |
|---|
| 85 | + outb_p(*lptr, virtual_dma_port + FD_DATA); |
|---|
| 85 | 86 | else |
|---|
| 86 | | - *lptr = inb_p(virtual_dma_port + 5); |
|---|
| 87 | + *lptr = inb_p(virtual_dma_port + FD_DATA); |
|---|
| 87 | 88 | } |
|---|
| 88 | 89 | virtual_dma_count = lcount; |
|---|
| 89 | 90 | virtual_dma_addr = lptr; |
|---|
| 90 | | - st = inb(virtual_dma_port + 4); |
|---|
| 91 | + st = inb(virtual_dma_port + FD_STATUS); |
|---|
| 91 | 92 | } |
|---|
| 92 | 93 | |
|---|
| 93 | 94 | #ifdef TRACE_FLPY_INT |
|---|
| 94 | 95 | calls++; |
|---|
| 95 | 96 | #endif |
|---|
| 96 | | - if (st == 0x20) |
|---|
| 97 | + if (st == STATUS_DMA) |
|---|
| 97 | 98 | return IRQ_HANDLED; |
|---|
| 98 | | - if (!(st & 0x20)) { |
|---|
| 99 | + if (!(st & STATUS_DMA)) { |
|---|
| 99 | 100 | virtual_dma_residue += virtual_dma_count; |
|---|
| 100 | 101 | virtual_dma_count = 0; |
|---|
| 101 | 102 | #ifdef TRACE_FLPY_INT |
|---|