beautypg.com

Avago Technologies LSI53C1010 User Manual

Page 201

background image

Scatter/Gather Operations

9-3

RW_Offset_patch_di:
;Relative offset will be changed so that we jump into the
;proper place in the scatter gather list
JUMP REL(Data_In_xfer); Data_In_xfer:
CHMOV FROM rw_data_buf1, WHEN DATA_IN CHMOV FROM
rw_data_buf2, WHEN DATA_IN
; 16 moves to support Scatter Gather
CHMOV FROM rw_data_buf3, WHEN DATA_IN
CHMOV FROM rw_data_buf4, WHEN DATA_IN
CHMOV FROM rw_data_buf5, WHEN DATA_IN
CHMOV FROM rw_data_buf6, WHEN DATA_IN
CHMOV FROM rw_data_buf7, WHEN DATA_IN
CHMOV FROM rw_data_buf8, WHEN DATA_IN
CHMOV FROM rw_data_buf9, WHEN DATA_IN
CHMOV FROM rw_data_buf10, WHEN DATA_IN
CHMOV FROM rw_data_buf11, WHEN DATA_IN
CHMOV FROM rw_data_buf12, WHEN DATA_IN
CHMOV FROM rw_data_buf13, WHEN DATA_IN
CHMOV FROM rw_data_buf14, WHEN DATA_IN
CHMOV FROM rw_data_buf15, WHEN DATA_IN
CHMOV FROM rw_data_buf16, WHEN DATA_IN

; Check to see if we need more SG list entries
MOVE SBR & RW_NEED_MORE_SG_ENTRIES to SFBR
INT RW_Need_More_SG, if not 0
; If we are here then all the data was transferred
; so we set a flag to indicate that
MOVE SBR | RW_ALL_DATA_TRANSFERRED to DWT

The example in

Figure 9.2

shows you an alternative method for doing

scatter/gather operations using SCRIPTS. This mechanism uses a
looping strategy to execute each scatter/gather entry. On each loop the
DSA value is incremented by 8, effectively moving to the next
scatter/gather entry in the scatter/gather list. Generally, when you use
this strategy, the scatter/gather list is located at the end of the table
indirect entries or is located separately from the other table indirect
entries that handle (re)select, message, command and status phases.
The DSA value is restored after the scatter/gather operations are
complete or the target changes phase. This method of doing
scatter/gather operations requires use of table indirect addressing.

This manual is related to the following products: