aic7xxx.seq (25005) | aic7xxx.seq (25123) |
---|---|
1/*+M*********************************************************************** 2 *Adaptec 274x/284x/294x device driver for Linux and FreeBSD. 3 * 4 *Copyright (c) 1994 John Aycock 5 * The University of Calgary Department of Computer Science. 6 * All rights reserved. 7 * 8 *FreeBSD, Twin, Wide, 2 command per target support, tagged queuing, --- 23 unchanged lines hidden (view full) --- 32 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, 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, STRICT 36 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 *OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 *SUCH DAMAGE. 39 * | 1/*+M*********************************************************************** 2 *Adaptec 274x/284x/294x device driver for Linux and FreeBSD. 3 * 4 *Copyright (c) 1994 John Aycock 5 * The University of Calgary Department of Computer Science. 6 * All rights reserved. 7 * 8 *FreeBSD, Twin, Wide, 2 command per target support, tagged queuing, --- 23 unchanged lines hidden (view full) --- 32 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, 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, STRICT 36 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 *OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 *SUCH DAMAGE. 39 * |
40 * $Id: aic7xxx.seq,v 1.71 1997/04/14 02:26:59 gibbs Exp $ | 40 * $Id: aic7xxx.seq,v 1.72 1997/04/18 16:31:55 gibbs Exp $ |
41 * 42 *-M************************************************************************/ 43 44#include <dev/aic7xxx/aic7xxx.reg> 45#include <scsi/scsi_message.h> 46 47/* 48 * A few words on the waiting SCB list: --- 926 unchanged lines hidden (view full) --- 975/* 976 * We didn't find it. If we're paging, pull an SCB and DMA down the 977 * one we want. If we aren't paging or the SCB we dma down has the 978 * abort flag set, return not found. 979 */ 980 mov ALLZEROS call get_free_or_disc_scb; 981 mvi DMAPARAMS, HDMAEN|DIRECTION|FIFORESET; 982 mov ARG_1 call dma_scb; | 41 * 42 *-M************************************************************************/ 43 44#include <dev/aic7xxx/aic7xxx.reg> 45#include <scsi/scsi_message.h> 46 47/* 48 * A few words on the waiting SCB list: --- 926 unchanged lines hidden (view full) --- 975/* 976 * We didn't find it. If we're paging, pull an SCB and DMA down the 977 * one we want. If we aren't paging or the SCB we dma down has the 978 * abort flag set, return not found. 979 */ 980 mov ALLZEROS call get_free_or_disc_scb; 981 mvi DMAPARAMS, HDMAEN|DIRECTION|FIFORESET; 982 mov ARG_1 call dma_scb; |
983 test SCB_RESID_SGCNT, 0xff jz . + 2; 984 or SCB_CONTROL, MUST_DMAUP_SCB; |
|
983 test SCB_CONTROL, ABORT_SCB jz return; 984find_error: 985 mvi SINDEX, SCB_LIST_NULL ret; 986foundSCB: 987 test SCB_CONTROL, ABORT_SCB jnz find_error; 988rem_scb_from_disc_list: 989/* Remove this SCB from the disconnection list */ 990 cmp SCB_NEXT,SCB_LIST_NULL je unlink_prev; --- 121 unchanged lines hidden (view full) --- 1112 mvi SINDEX, SCB_LIST_NULL ret; 1113dequeue_disc_scb: 1114 mov SCBPTR, DISCONNECTED_SCBH; 1115/* 1116 * If we have a residual, then we are in the middle of some I/O 1117 * and we have to send this SCB back up to the kernel so that the 1118 * saved data pointers and residual information isn't lost. 1119 */ | 985 test SCB_CONTROL, ABORT_SCB jz return; 986find_error: 987 mvi SINDEX, SCB_LIST_NULL ret; 988foundSCB: 989 test SCB_CONTROL, ABORT_SCB jnz find_error; 990rem_scb_from_disc_list: 991/* Remove this SCB from the disconnection list */ 992 cmp SCB_NEXT,SCB_LIST_NULL je unlink_prev; --- 121 unchanged lines hidden (view full) --- 1114 mvi SINDEX, SCB_LIST_NULL ret; 1115dequeue_disc_scb: 1116 mov SCBPTR, DISCONNECTED_SCBH; 1117/* 1118 * If we have a residual, then we are in the middle of some I/O 1119 * and we have to send this SCB back up to the kernel so that the 1120 * saved data pointers and residual information isn't lost. 1121 */ |
1122 test SCB_CONTROL, MUST_DMAUP_SCB jz . + 3; 1123 and SCB_CONTROL, ~MUST_DMAUP_SCB; 1124 jmp dma_up_scb; |
|
1120 test SCB_RESID_SGCNT,0xff jnz dma_up_scb; 1121 cmp SCB_LINKED_NEXT, SCB_LIST_NULL je unlink_disc_scb; 1122dma_up_scb: 1123 mvi DMAPARAMS, FIFORESET; 1124 mov SCB_TAG call dma_scb; 1125unlink_disc_scb: 1126 /* jmp instead of call since we want to return anyway */ 1127 mov SCBPTR jmp rem_scb_from_disc_list; --- 18 unchanged lines hidden --- | 1125 test SCB_RESID_SGCNT,0xff jnz dma_up_scb; 1126 cmp SCB_LINKED_NEXT, SCB_LIST_NULL je unlink_disc_scb; 1127dma_up_scb: 1128 mvi DMAPARAMS, FIFORESET; 1129 mov SCB_TAG call dma_scb; 1130unlink_disc_scb: 1131 /* jmp instead of call since we want to return anyway */ 1132 mov SCBPTR jmp rem_scb_from_disc_list; --- 18 unchanged lines hidden --- |