1  typedef union { int ioport; volatile char *maddr; } bus_space_handle_t;
       2  struct scb { unsigned short *hscb; };
       3  struct ahd_softc
       4  {
       5    int tags[2];
       6    bus_space_handle_t bshs[2];
       7    int dst_mode;
       8    int src_mode;
       9    int flags;
      10  };
      11  void outb(int, int);
      12  
      13  int foo_inb(struct ahd_softc*);
      14  int foo_int_int (int, int);
      15  int ahd_inb(struct ahd_softc*);
      16  int ahd_scb_active_in_fifo (void);
      17  
      18  void ahd_flush_qoutfifo (struct ahd_softc *ahd, struct scb *scb)
      19  {
      20    int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;
      21    int bb, p;
      22  
      23    if (ahd->src_mode == 1)
      24      { int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;}
      25    foo_int_int (ahd->src_mode, ahd->dst_mode);
      26    p = 1;
      27    if (ahd->src_mode == 2 && ahd->dst_mode == p)
      28      {
      29        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      30          outb (1, ahd->bshs[0].ioport );
      31        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      32          outb (1, ahd->bshs[0].ioport );
      33      }
      34    ahd->src_mode = 1;
      35    ahd->dst_mode = 2;
      36    while ((ahd_inb (ahd) & 0x01) != 0)
      37    {
      38      p = 1;
      39      if (ahd->src_mode == 2 && ahd->dst_mode == p)
      40        {
      41          if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      42            outb (1, ahd->bshs[0].ioport );
      43          if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      44            outb (1, ahd->bshs[0].ioport );
      45        }
      46      ahd->src_mode = 1;
      47      ahd->dst_mode = 2;
      48      if (ahd_scb_active_in_fifo () == 0)
      49        continue;
      50      p = 1;
      51      if (ahd->src_mode == 2 && ahd->dst_mode == p)
      52        {
      53          if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      54            outb (1, ahd->bshs[0].ioport );
      55          if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      56            outb (1, ahd->bshs[0].ioport );
      57        }
      58      ahd->src_mode = 1;
      59      ahd->dst_mode = 2;
      60      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      61        outb (1, ahd->bshs[0].ioport );
      62      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      63        outb (1, ahd->bshs[0].ioport );
      64      if ((ahd->flags & 1) != 0)
      65        foo_inb (ahd);
      66      if ((ahd->flags & 1) != 0)
      67        foo_inb (ahd);
      68      if ((ahd->flags & 1) != 0)
      69        foo_inb (ahd);
      70      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      71        outb (1, ahd->bshs[0].ioport );
      72      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      73        outb (1, ahd->bshs[0].ioport );
      74      if ((ahd->flags & 1) != 0)
      75        foo_inb (ahd);
      76      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      77        outb (1, ahd->bshs[0].ioport );
      78      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      79        outb (1, ahd->bshs[0].ioport );
      80      bb = (*(scb->hscb));
      81      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      82        outb (1, ahd->bshs[0].ioport );
      83      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      84        outb (1, ahd->bshs[0].ioport );
      85      bb = (*(scb->hscb));
      86      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      87        outb (1, ahd->bshs[0].ioport );
      88      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      89        outb (1, ahd->bshs[0].ioport );
      90    }
      91    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      92      outb (1, ahd->bshs[0].ioport );
      93    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      94      outb (1, ahd->bshs[0].ioport );
      95    p = 1;
      96    if (ahd->src_mode == 2 && ahd->dst_mode == p)
      97      {
      98        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      99          outb (1, ahd->bshs[0].ioport );
     100        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
     101          outb (1, ahd->bshs[0].ioport );
     102      }
     103    ahd->src_mode = 1;
     104    ahd->dst_mode = 2;
     105    if (ahd->src_mode == 2 && ahd->dst_mode == dst)
     106      {
     107        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
     108          outb (1, ahd->bshs[0].ioport );
     109        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
     110          outb (1, ahd->bshs[0].ioport );
     111      }
     112    ahd->src_mode = 1;
     113    ahd->dst_mode = 2;
     114    ahd->flags |= 1;
     115  }