isadma_copytobuf((caddr_t)ccb, CCB_PHYS_SIZE, 1, ccb->ccb_phys);
aha_start_ccbs(sc)	struct aha_softc *sc;{	int iobase = sc->sc_iobase;	struct aha_mbx_out *wmbo;	/* Mail Box Out pointer */	struct aha_ccb *ccb;	wmbo = wmbx->tmbo;	while ((ccb = sc->sc_waiting_ccb.tqh_first) != NULL) {		if (sc->sc_mbofull >= AHA_MBX_SIZE) {			aha_collect_mbo(sc);			if (sc->sc_mbofull >= AHA_MBX_SIZE) {				struct aha_toggle toggle;				toggle.cmd.opcode = AHA_MBO_INTR_EN;				toggle.cmd.enable = 1;				aha_cmd(iobase, sc, sizeof(toggle.cmd),				    (u_char *)&toggle.cmd, 0, (u_char *)0);				break;			}		}		TAILQ_REMOVE(&sc->sc_waiting_ccb, ccb, chain);#ifdef AHADIAG		ccb->flags |= CCB_SENDING;#endif		/* Link ccb to mbo. */		ltophys(ccb->ccb_phys[0].addr, wmbo->ccb_addr);		if (ccb->flags & CCB_ABORT)			wmbo->cmd = AHA_MBO_ABORT;		else			wmbo->cmd = AHA_MBO_START;		/* Tell the card to poll immediately. */		outb(iobase + AHA_CMD_PORT, AHA_START_SCSI);		if ((ccb->xs->flags & SCSI_POLL) == 0)			timeout(aha_timeout, ccb, (ccb->timeout * hz) / 1000);		++sc->sc_mbofull;		aha_nextmbx(wmbo, wmbx, mbo);	}	wmbx->tmbo = wmbo;}