Deleted Added
full compact
aic7xxx.seq (109590) aic7xxx.seq (115333)
1/*
2 * Adaptec 274x/284x/294x device driver firmware for Linux and FreeBSD.
3 *
4 * Copyright (c) 1994-2001 Justin T. Gibbs.
5 * Copyright (c) 2000-2001 Adaptec Inc.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 23 unchanged lines hidden (view full) ---

32 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
37 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38 * POSSIBILITY OF SUCH DAMAGES.
39 *
1/*
2 * Adaptec 274x/284x/294x device driver firmware for Linux and FreeBSD.
3 *
4 * Copyright (c) 1994-2001 Justin T. Gibbs.
5 * Copyright (c) 2000-2001 Adaptec Inc.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 23 unchanged lines hidden (view full) ---

32 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
37 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38 * POSSIBILITY OF SUCH DAMAGES.
39 *
40 * $FreeBSD: head/sys/dev/aic7xxx/aic7xxx.seq 109590 2003-01-20 20:44:55Z gibbs $
40 * $FreeBSD: head/sys/dev/aic7xxx/aic7xxx.seq 115333 2003-05-26 21:24:01Z gibbs $
41 */
42
41 */
42
43VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#54 $"
43VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#55 $"
44PATCH_ARG_LIST = "struct ahc_softc *ahc"
45PREFIX = "ahc_"
46
47#include "aic7xxx.reg"
48#include "scsi_message.h"
49
50/*
51 * A few words on the waiting SCB list:

--- 380 unchanged lines hidden (view full) ---

432 * SCB is used, so don't bother with it now.
433 */
434select_out:
435 /* Turn off the selection hardware */
436 and SCSISEQ, TEMODE|ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ;
437 mov SCBPTR, WAITING_SCBH;
438 mov WAITING_SCBH,SCB_NEXT;
439 mov SAVED_SCSIID, SCB_SCSIID;
44PATCH_ARG_LIST = "struct ahc_softc *ahc"
45PREFIX = "ahc_"
46
47#include "aic7xxx.reg"
48#include "scsi_message.h"
49
50/*
51 * A few words on the waiting SCB list:

--- 380 unchanged lines hidden (view full) ---

432 * SCB is used, so don't bother with it now.
433 */
434select_out:
435 /* Turn off the selection hardware */
436 and SCSISEQ, TEMODE|ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ;
437 mov SCBPTR, WAITING_SCBH;
438 mov WAITING_SCBH,SCB_NEXT;
439 mov SAVED_SCSIID, SCB_SCSIID;
440 mov SAVED_LUN, SCB_LUN;
440 and SAVED_LUN, LID, SCB_LUN;
441 call set_transfer_settings;
442 if ((ahc->flags & AHC_TARGETROLE) != 0) {
443 test SSTAT0, TARGET jz initiator_select;
444
445 or SXFRCTL0, CLRSTCNT|CLRCHN;
446
447 /*
448 * Put tag in connonical location since not

--- 7 unchanged lines hidden (view full) ---

456 * sending our identify messages.
457 */
458 mvi P_MESGIN|BSYO call change_phase;
459 mvi CLRSINT0, CLRSELDO;
460
461 /*
462 * Start out with a simple identify message.
463 */
441 call set_transfer_settings;
442 if ((ahc->flags & AHC_TARGETROLE) != 0) {
443 test SSTAT0, TARGET jz initiator_select;
444
445 or SXFRCTL0, CLRSTCNT|CLRCHN;
446
447 /*
448 * Put tag in connonical location since not

--- 7 unchanged lines hidden (view full) ---

456 * sending our identify messages.
457 */
458 mvi P_MESGIN|BSYO call change_phase;
459 mvi CLRSINT0, CLRSELDO;
460
461 /*
462 * Start out with a simple identify message.
463 */
464 or SCB_LUN, MSG_IDENTIFYFLAG call target_outb;
464 or SAVED_LUN, MSG_IDENTIFYFLAG call target_outb;
465
466 /*
467 * If we are the result of a tagged command, send
468 * a simple Q tag and the tag id.
469 */
470 test SCB_CONTROL, TAG_ENB jz . + 3;
471 mvi MSG_SIMPLE_Q_TAG call target_outb;
472 mov SCB_TARGET_ITAG call target_outb;

--- 290 unchanged lines hidden (view full) ---

763idle_sgfetch_complete:
764 call disable_ccsgen_fetch_done;
765 and CCSGADDR, SG_PREFETCH_ADDR_MASK, SCB_RESIDUAL_SGPTR;
766idle_sg_avail:
767 if ((ahc->features & AHC_ULTRA2) != 0) {
768 /* Does the hardware have space for another SG entry? */
769 test DFSTATUS, PRELOAD_AVAIL jz return;
770 bmov HADDR, CCSGRAM, 7;
465
466 /*
467 * If we are the result of a tagged command, send
468 * a simple Q tag and the tag id.
469 */
470 test SCB_CONTROL, TAG_ENB jz . + 3;
471 mvi MSG_SIMPLE_Q_TAG call target_outb;
472 mov SCB_TARGET_ITAG call target_outb;

--- 290 unchanged lines hidden (view full) ---

763idle_sgfetch_complete:
764 call disable_ccsgen_fetch_done;
765 and CCSGADDR, SG_PREFETCH_ADDR_MASK, SCB_RESIDUAL_SGPTR;
766idle_sg_avail:
767 if ((ahc->features & AHC_ULTRA2) != 0) {
768 /* Does the hardware have space for another SG entry? */
769 test DFSTATUS, PRELOAD_AVAIL jz return;
770 bmov HADDR, CCSGRAM, 7;
771 test HCNT[0], 0x1 jz . + 2;
772 xor DATA_COUNT_ODD, 0x1;
773 bmov SCB_RESIDUAL_DATACNT[3], CCSGRAM, 1;
774 if ((ahc->flags & AHC_39BIT_ADDRESSING) != 0) {
775 mov SCB_RESIDUAL_DATACNT[3] call set_hhaddr;
776 }
777 call sg_advance;
778 mov SINDEX, SCB_RESIDUAL_SGPTR[0];
771 bmov SCB_RESIDUAL_DATACNT[3], CCSGRAM, 1;
772 if ((ahc->flags & AHC_39BIT_ADDRESSING) != 0) {
773 mov SCB_RESIDUAL_DATACNT[3] call set_hhaddr;
774 }
775 call sg_advance;
776 mov SINDEX, SCB_RESIDUAL_SGPTR[0];
779 test DATA_COUNT_ODD, 0x1 jz . + 2;
780 or SINDEX, ODD_SEG;
781 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2;
782 or SINDEX, LAST_SEG;
783 mov SG_CACHE_PRE, SINDEX;
784 /* Load the segment */
785 or DFCNTRL, PRELOADEN;
786 }
787 ret;
788}

--- 81 unchanged lines hidden (view full) ---

870 mvi SCB_DATAPTR call bcopy_7;
871 mvi DINDEX, SCB_RESIDUAL_DATACNT + 3;
872 mvi SCB_DATACNT + 3 call bcopy_5;
873 }
874 if ((ahc->bugs & AHC_PCI_MWI_BUG) != 0 && ahc->pci_cachesize != 0) {
875 call calc_mwi_residual;
876 }
877 and SCB_RESIDUAL_SGPTR[0], ~SG_FULL_RESID;
777 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2;
778 or SINDEX, LAST_SEG;
779 mov SG_CACHE_PRE, SINDEX;
780 /* Load the segment */
781 or DFCNTRL, PRELOADEN;
782 }
783 ret;
784}

--- 81 unchanged lines hidden (view full) ---

866 mvi SCB_DATAPTR call bcopy_7;
867 mvi DINDEX, SCB_RESIDUAL_DATACNT + 3;
868 mvi SCB_DATACNT + 3 call bcopy_5;
869 }
870 if ((ahc->bugs & AHC_PCI_MWI_BUG) != 0 && ahc->pci_cachesize != 0) {
871 call calc_mwi_residual;
872 }
873 and SCB_RESIDUAL_SGPTR[0], ~SG_FULL_RESID;
878 and DATA_COUNT_ODD, 0x1, HCNT[0];
879
880 if ((ahc->features & AHC_ULTRA2) == 0) {
881 if ((ahc->features & AHC_CMD_CHAN) != 0) {
882 bmov STCNT, HCNT, 3;
883 } else {
884 call set_stcnt_from_hcnt;
885 }
886 }

--- 18 unchanged lines hidden (view full) ---

905 mvi DATA_OVERRUN call set_seqint;
906 jmp ITloop;
907
908data_phase_inbounds:
909 if ((ahc->features & AHC_ULTRA2) != 0) {
910 mov SINDEX, SCB_RESIDUAL_SGPTR[0];
911 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2;
912 or SINDEX, LAST_SEG;
874
875 if ((ahc->features & AHC_ULTRA2) == 0) {
876 if ((ahc->features & AHC_CMD_CHAN) != 0) {
877 bmov STCNT, HCNT, 3;
878 } else {
879 call set_stcnt_from_hcnt;
880 }
881 }

--- 18 unchanged lines hidden (view full) ---

900 mvi DATA_OVERRUN call set_seqint;
901 jmp ITloop;
902
903data_phase_inbounds:
904 if ((ahc->features & AHC_ULTRA2) != 0) {
905 mov SINDEX, SCB_RESIDUAL_SGPTR[0];
906 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2;
907 or SINDEX, LAST_SEG;
913 test DATA_COUNT_ODD, 0x1 jz . + 2;
914 or SINDEX, ODD_SEG;
915 mov SG_CACHE_PRE, SINDEX;
916 mov DFCNTRL, DMAPARAMS;
917ultra2_dma_loop:
918 call idle_loop;
919 /*
920 * The transfer is complete if either the last segment
921 * completes or the target changes phase.
922 */

--- 78 unchanged lines hidden (view full) ---

1001 */
1002 test SG_CACHE_SHADOW, 0x80 jz sgptr_fixup_done;
1003 test SCB_RESIDUAL_SGPTR[0], 0x80 jnz sgptr_fixup_done;
1004 add SCB_RESIDUAL_SGPTR[1], -1;
1005 adc SCB_RESIDUAL_SGPTR[2], -1;
1006 adc SCB_RESIDUAL_SGPTR[3], -1;
1007sgptr_fixup_done:
1008 and SCB_RESIDUAL_SGPTR[0], SG_ADDR_MASK, SG_CACHE_SHADOW;
908 mov SG_CACHE_PRE, SINDEX;
909 mov DFCNTRL, DMAPARAMS;
910ultra2_dma_loop:
911 call idle_loop;
912 /*
913 * The transfer is complete if either the last segment
914 * completes or the target changes phase.
915 */

--- 78 unchanged lines hidden (view full) ---

994 */
995 test SG_CACHE_SHADOW, 0x80 jz sgptr_fixup_done;
996 test SCB_RESIDUAL_SGPTR[0], 0x80 jnz sgptr_fixup_done;
997 add SCB_RESIDUAL_SGPTR[1], -1;
998 adc SCB_RESIDUAL_SGPTR[2], -1;
999 adc SCB_RESIDUAL_SGPTR[3], -1;
1000sgptr_fixup_done:
1001 and SCB_RESIDUAL_SGPTR[0], SG_ADDR_MASK, SG_CACHE_SHADOW;
1009 clr DATA_COUNT_ODD;
1010 test SG_CACHE_SHADOW, ODD_SEG jz . + 2;
1011 or DATA_COUNT_ODD, 0x1;
1012 clr SCB_RESIDUAL_DATACNT[3]; /* We are not the last seg */
1002 /* We are not the last seg */
1003 and SCB_RESIDUAL_DATACNT[3], ~SG_LAST_SEG;
1013residuals_correct:
1014 /*
1015 * Go ahead and shut down the DMA engine now.
1016 * In the future, we'll want to handle end of
1017 * transfer messages prior to doing this, but this
1018 * requires similar restructuring for pre-ULTRA2
1019 * controllers.
1020 */

--- 220 unchanged lines hidden (view full) ---

1241 call sg_advance;
1242
1243sg_load_done:
1244 if ((ahc->features & AHC_CMD_CHAN) != 0) {
1245 bmov STCNT, HCNT, 3;
1246 } else {
1247 call set_stcnt_from_hcnt;
1248 }
1004residuals_correct:
1005 /*
1006 * Go ahead and shut down the DMA engine now.
1007 * In the future, we'll want to handle end of
1008 * transfer messages prior to doing this, but this
1009 * requires similar restructuring for pre-ULTRA2
1010 * controllers.
1011 */

--- 220 unchanged lines hidden (view full) ---

1232 call sg_advance;
1233
1234sg_load_done:
1235 if ((ahc->features & AHC_CMD_CHAN) != 0) {
1236 bmov STCNT, HCNT, 3;
1237 } else {
1238 call set_stcnt_from_hcnt;
1239 }
1249 /* Track odd'ness */
1250 test HCNT[0], 0x1 jz . + 2;
1251 xor DATA_COUNT_ODD, 0x1;
1252
1253 if ((ahc->flags & AHC_TARGETROLE) != 0) {
1254 test SSTAT0, TARGET jnz data_phase_loop;
1255 }
1256 }
1257data_phase_finish:
1258 /*
1259 * If the target has left us in data phase, loop through

--- 85 unchanged lines hidden (view full) ---

1345 and SEQ_FLAGS, ~DPHASE_PENDING;
1346 /*
1347 * For data-in phases, wait for any pending acks from the
1348 * initiator before changing phase. We only need to
1349 * send Ignore Wide Residue messages for data-in phases.
1350 */
1351 test DFCNTRL, DIRECTION jz target_ITloop;
1352 test SSTAT1, REQINIT jnz .;
1240
1241 if ((ahc->flags & AHC_TARGETROLE) != 0) {
1242 test SSTAT0, TARGET jnz data_phase_loop;
1243 }
1244 }
1245data_phase_finish:
1246 /*
1247 * If the target has left us in data phase, loop through

--- 85 unchanged lines hidden (view full) ---

1333 and SEQ_FLAGS, ~DPHASE_PENDING;
1334 /*
1335 * For data-in phases, wait for any pending acks from the
1336 * initiator before changing phase. We only need to
1337 * send Ignore Wide Residue messages for data-in phases.
1338 */
1339 test DFCNTRL, DIRECTION jz target_ITloop;
1340 test SSTAT1, REQINIT jnz .;
1353 test DATA_COUNT_ODD, 0x1 jz target_ITloop;
1341 test SCB_LUN, SCB_XFERLEN_ODD jz target_ITloop;
1354 test SCSIRATE, WIDEXFER jz target_ITloop;
1355 /*
1356 * Issue an Ignore Wide Residue Message.
1357 */
1358 mvi P_MESGIN|BSYO call change_phase;
1359 mvi MSG_IGN_WIDE_RESIDUE call target_outb;
1360 mvi 1 call target_outb;
1361 jmp target_ITloop;

--- 143 unchanged lines hidden (view full) ---

1505 } else {
1506 mvi SCSISIGO, ATNO;
1507 }
1508p_mesgout:
1509 mov SINDEX, MSG_OUT;
1510 cmp SINDEX, MSG_IDENTIFYFLAG jne p_mesgout_from_host;
1511 test SCB_CONTROL,MK_MESSAGE jnz host_message_loop;
1512p_mesgout_identify:
1342 test SCSIRATE, WIDEXFER jz target_ITloop;
1343 /*
1344 * Issue an Ignore Wide Residue Message.
1345 */
1346 mvi P_MESGIN|BSYO call change_phase;
1347 mvi MSG_IGN_WIDE_RESIDUE call target_outb;
1348 mvi 1 call target_outb;
1349 jmp target_ITloop;

--- 143 unchanged lines hidden (view full) ---

1493 } else {
1494 mvi SCSISIGO, ATNO;
1495 }
1496p_mesgout:
1497 mov SINDEX, MSG_OUT;
1498 cmp SINDEX, MSG_IDENTIFYFLAG jne p_mesgout_from_host;
1499 test SCB_CONTROL,MK_MESSAGE jnz host_message_loop;
1500p_mesgout_identify:
1513 or SINDEX, MSG_IDENTIFYFLAG|DISCENB, SCB_LUN;
1501 or SINDEX, MSG_IDENTIFYFLAG|DISCENB, SAVED_LUN;
1514 test SCB_CONTROL, DISCENB jnz . + 2;
1515 and SINDEX, ~DISCENB;
1516/*
1517 * Send a tag message if TAG_ENB is set in the SCB control block.
1518 * Use SCB_TAG (the position in the kernel's SCB array) as the tag value.
1519 */
1520p_mesgout_tag:
1521 test SCB_CONTROL,TAG_ENB jz p_mesgout_onebyte;

--- 60 unchanged lines hidden (view full) ---

1582
1583mesgin_ign_wide_residue:
1584if ((ahc->features & AHC_WIDE) != 0) {
1585 test SCSIRATE, WIDEXFER jz mesgin_reject;
1586 /* Pull the residue byte */
1587 mvi ARG_1 call inb_next;
1588 cmp ARG_1, 0x01 jne mesgin_reject;
1589 test SCB_RESIDUAL_SGPTR[0], SG_LIST_NULL jz . + 2;
1502 test SCB_CONTROL, DISCENB jnz . + 2;
1503 and SINDEX, ~DISCENB;
1504/*
1505 * Send a tag message if TAG_ENB is set in the SCB control block.
1506 * Use SCB_TAG (the position in the kernel's SCB array) as the tag value.
1507 */
1508p_mesgout_tag:
1509 test SCB_CONTROL,TAG_ENB jz p_mesgout_onebyte;

--- 60 unchanged lines hidden (view full) ---

1570
1571mesgin_ign_wide_residue:
1572if ((ahc->features & AHC_WIDE) != 0) {
1573 test SCSIRATE, WIDEXFER jz mesgin_reject;
1574 /* Pull the residue byte */
1575 mvi ARG_1 call inb_next;
1576 cmp ARG_1, 0x01 jne mesgin_reject;
1577 test SCB_RESIDUAL_SGPTR[0], SG_LIST_NULL jz . + 2;
1590 test DATA_COUNT_ODD, 0x1 jz mesgin_done;
1578 test SCB_LUN, SCB_XFERLEN_ODD jnz mesgin_done;
1591 mvi IGN_WIDE_RES call set_seqint;
1592 jmp mesgin_done;
1593}
1594
1595mesgin_proto_violation:
1596 mvi PROTO_VIOLATION call set_seqint;
1597 jmp mesgin_done;
1598mesgin_reject:

--- 112 unchanged lines hidden (view full) ---

1711 test SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT
1712 jnz mesgin_proto_violation;
1713 or SCB_CONTROL,DISCONNECTED;
1714 if ((ahc->flags & AHC_PAGESCBS) != 0) {
1715 call add_scb_to_disc_list;
1716 }
1717 test SCB_CONTROL, TAG_ENB jnz await_busfree;
1718 mov ARG_1, SCB_TAG;
1579 mvi IGN_WIDE_RES call set_seqint;
1580 jmp mesgin_done;
1581}
1582
1583mesgin_proto_violation:
1584 mvi PROTO_VIOLATION call set_seqint;
1585 jmp mesgin_done;
1586mesgin_reject:

--- 112 unchanged lines hidden (view full) ---

1699 test SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT
1700 jnz mesgin_proto_violation;
1701 or SCB_CONTROL,DISCONNECTED;
1702 if ((ahc->flags & AHC_PAGESCBS) != 0) {
1703 call add_scb_to_disc_list;
1704 }
1705 test SCB_CONTROL, TAG_ENB jnz await_busfree;
1706 mov ARG_1, SCB_TAG;
1719 mov SAVED_LUN, SCB_LUN;
1707 and SAVED_LUN, LID, SCB_LUN;
1720 mov SCB_SCSIID call set_busy_target;
1721 jmp await_busfree;
1722
1723/*
1724 * Save data pointers message:
1725 * Copying RAM values back to SCB, for Save Data Pointers message, but
1726 * only if we've actually been into a data phase to change them. This
1727 * protects against bogus data in scratch ram and the residual counts

--- 126 unchanged lines hidden (view full) ---

1854 if ((ahc->flags & AHC_SCB_BTT) != 0) {
1855 jmp setup_SCB_id_lun_okay;
1856 } else {
1857 /*
1858 * We only allow one untagged command per-target
1859 * at a time. So, if the lun doesn't match, look
1860 * for a tag message.
1861 */
1708 mov SCB_SCSIID call set_busy_target;
1709 jmp await_busfree;
1710
1711/*
1712 * Save data pointers message:
1713 * Copying RAM values back to SCB, for Save Data Pointers message, but
1714 * only if we've actually been into a data phase to change them. This
1715 * protects against bogus data in scratch ram and the residual counts

--- 126 unchanged lines hidden (view full) ---

1842 if ((ahc->flags & AHC_SCB_BTT) != 0) {
1843 jmp setup_SCB_id_lun_okay;
1844 } else {
1845 /*
1846 * We only allow one untagged command per-target
1847 * at a time. So, if the lun doesn't match, look
1848 * for a tag message.
1849 */
1862 mov A, SCB_LUN;
1850 and A, LID, SCB_LUN;
1863 cmp SAVED_LUN, A je setup_SCB_id_lun_okay;
1864 if ((ahc->flags & AHC_PAGESCBS) != 0) {
1865 /*
1866 * findSCB removes the SCB from the
1867 * disconnected list, so we must replace
1868 * it there should this SCB be for another
1869 * lun.
1870 */

--- 41 unchanged lines hidden (view full) ---

1912 or SEQ_FLAGS, 0x4;
1913 }
1914 mov A, SCB_SCSIID;
1915 cmp SAVED_SCSIID, A jne not_found_cleanup_scb;
1916 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) {
1917 or SEQ_FLAGS, 0x8;
1918 }
1919setup_SCB_id_okay:
1851 cmp SAVED_LUN, A je setup_SCB_id_lun_okay;
1852 if ((ahc->flags & AHC_PAGESCBS) != 0) {
1853 /*
1854 * findSCB removes the SCB from the
1855 * disconnected list, so we must replace
1856 * it there should this SCB be for another
1857 * lun.
1858 */

--- 41 unchanged lines hidden (view full) ---

1900 or SEQ_FLAGS, 0x4;
1901 }
1902 mov A, SCB_SCSIID;
1903 cmp SAVED_SCSIID, A jne not_found_cleanup_scb;
1904 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) {
1905 or SEQ_FLAGS, 0x8;
1906 }
1907setup_SCB_id_okay:
1920 mov A, SCB_LUN;
1908 and A, LID, SCB_LUN;
1921 cmp SAVED_LUN, A jne not_found_cleanup_scb;
1922setup_SCB_id_lun_okay:
1923 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) {
1924 or SEQ_FLAGS, 0x10;
1925 }
1926 test SCB_CONTROL,DISCONNECTED jz not_found_cleanup_scb;
1927 and SCB_CONTROL,~DISCONNECTED;
1928 test SCB_CONTROL, TAG_ENB jnz setup_SCB_tagged;

--- 474 unchanged lines hidden ---
1909 cmp SAVED_LUN, A jne not_found_cleanup_scb;
1910setup_SCB_id_lun_okay:
1911 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) {
1912 or SEQ_FLAGS, 0x10;
1913 }
1914 test SCB_CONTROL,DISCONNECTED jz not_found_cleanup_scb;
1915 and SCB_CONTROL,~DISCONNECTED;
1916 test SCB_CONTROL, TAG_ENB jnz setup_SCB_tagged;

--- 474 unchanged lines hidden ---