typedef union { int ioport; volatile char *maddr; } bus_space_handle_t; struct scb { unsigned short *hscb; }; struct ahd_softc { int tags[2]; bus_space_handle_t bshs[2]; int dst_mode; int src_mode; int flags; }; void outb(int, int); int foo_inb(struct ahd_softc*); int foo_int_int (int, int); int ahd_inb(struct ahd_softc*); int ahd_scb_active_in_fifo (void); void ahd_flush_qoutfifo (struct ahd_softc *ahd, struct scb *scb) { int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1; int bb, p; if (ahd->src_mode == 1) { int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;} foo_int_int (ahd->src_mode, ahd->dst_mode); p = 1; if (ahd->src_mode == 2 && ahd->dst_mode == p) { if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); } ahd->src_mode = 1; ahd->dst_mode = 2; while ((ahd_inb (ahd) & 0x01) != 0) { p = 1; if (ahd->src_mode == 2 && ahd->dst_mode == p) { if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); } ahd->src_mode = 1; ahd->dst_mode = 2; if (ahd_scb_active_in_fifo () == 0) continue; p = 1; if (ahd->src_mode == 2 && ahd->dst_mode == p) { if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); } ahd->src_mode = 1; ahd->dst_mode = 2; if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if ((ahd->flags & 1) != 0) foo_inb (ahd); if ((ahd->flags & 1) != 0) foo_inb (ahd); if ((ahd->flags & 1) != 0) foo_inb (ahd); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if ((ahd->flags & 1) != 0) foo_inb (ahd); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); bb = (*(scb->hscb)); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); bb = (*(scb->hscb)); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); } if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); p = 1; if (ahd->src_mode == 2 && ahd->dst_mode == p) { if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); } ahd->src_mode = 1; ahd->dst_mode = 2; if (ahd->src_mode == 2 && ahd->dst_mode == dst) { if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr); outb (1, ahd->bshs[0].ioport ); } ahd->src_mode = 1; ahd->dst_mode = 2; ahd->flags |= 1; }