summaryrefslogtreecommitdiff
path: root/sys/dev/microcode
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/microcode')
-rw-r--r--sys/dev/microcode/aic7xxx/aic79xx.reg51
-rw-r--r--sys/dev/microcode/aic7xxx/aic79xx.seq337
-rw-r--r--sys/dev/microcode/aic7xxx/aic79xx_reg.h127
-rw-r--r--sys/dev/microcode/aic7xxx/aic79xx_seq.h1108
4 files changed, 834 insertions, 789 deletions
diff --git a/sys/dev/microcode/aic7xxx/aic79xx.reg b/sys/dev/microcode/aic7xxx/aic79xx.reg
index b3cd742428e..5470278cffa 100644
--- a/sys/dev/microcode/aic7xxx/aic79xx.reg
+++ b/sys/dev/microcode/aic7xxx/aic79xx.reg
@@ -1,3 +1,5 @@
+/* $NetBSD: aic79xx.reg,v 1.4 2003/08/29 00:10:01 thorpej Exp $ */
+
/*
* Aic79xx register and scratch ram definitions.
*
@@ -37,9 +39,9 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
- * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.reg,v 1.10 2003/03/25 22:16:27 scottl Exp $
+ * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.reg,v 1.11 2003/05/04 00:20:07 gibbs Exp $
*/
-VERSION = "$NetBSD: aic79xx.reg,v 1.3 2003/05/14 12:57:46 wiz Exp $"
+VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $"
/*
* This file is processed by the aic7xxx_asm utility for use in assembling
@@ -194,7 +196,8 @@ register SEQINTCODE {
TRACEPOINT1,
TRACEPOINT2,
TRACEPOINT3,
- SAW_HWERR
+ SAW_HWERR,
+ BAD_SCB_STATUS
}
}
@@ -3484,9 +3487,6 @@ scratch_ram {
LONGJMP_ADDR {
size 2
}
- LONGJMP_SCB {
- size 2
- }
ACCUM_SAVE {
size 1
}
@@ -3799,23 +3799,6 @@ scb {
size 4
alias SCB_NEXT_COMPLETE
}
- SCB_TAG {
- size 2
- }
- SCB_CDB_LEN {
- size 1
- field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */
- }
- SCB_TASK_MANAGEMENT {
- size 1
- }
- SCB_NEXT {
- alias SCB_NEXT_SCB_BUSADDR
- size 2
- }
- SCB_NEXT2 {
- size 2
- }
SCB_DATAPTR {
size 8
}
@@ -3834,6 +3817,16 @@ scb {
field SG_FULL_RESID 0x02 /* In the first byte */
field SG_LIST_NULL 0x01 /* In the first byte */
}
+ SCB_BUSADDR {
+ size 4
+ }
+ SCB_NEXT {
+ alias SCB_NEXT_SCB_BUSADDR
+ size 2
+ }
+ SCB_NEXT2 {
+ size 2
+ }
SCB_CONTROL {
size 1
field TARGET_SCB 0x80
@@ -3856,8 +3849,16 @@ scb {
SCB_TASK_ATTRIBUTE {
size 1
}
- SCB_BUSADDR {
- size 4
+ SCB_CDB_LEN {
+ size 1
+ field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */
+ }
+ SCB_TASK_MANAGEMENT {
+ size 1
+ }
+ SCB_TAG {
+ alias SCB_FIFO_USE_COUNT
+ size 2
}
SCB_SPARE {
size 8
diff --git a/sys/dev/microcode/aic7xxx/aic79xx.seq b/sys/dev/microcode/aic7xxx/aic79xx.seq
index c92ac5e9db6..ac1838e7f94 100644
--- a/sys/dev/microcode/aic7xxx/aic79xx.seq
+++ b/sys/dev/microcode/aic7xxx/aic79xx.seq
@@ -1,3 +1,5 @@
+/* $NetBSD: aic79xx.seq,v 1.4 2003/08/29 00:10:01 thorpej Exp $ */
+
/*
* Adaptec U320 device driver firmware for Linux and FreeBSD.
*
@@ -37,10 +39,10 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
- * $FreeBSD: /repoman/r/ncvs/src/sys/dev/aic7xxx/aic79xx.seq,v 1.7 2003/02/27 23:23:16 gibbs Exp $
+ * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.seq,v 1.8 2003/05/04 00:20:07 gibbs Exp $
*/
-VERSION = "$NetBSD: aic79xx.seq,v 1.3 2003/05/14 12:57:46 wiz Exp $"
+VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#91 $"
PATCH_ARG_LIST = "struct ahd_softc *ahd"
PREFIX = "ahd_"
@@ -89,6 +91,13 @@ END_CRITICAL;
idle_loop_check_nonpackreq:
test SSTAT2, NONPACKREQ jz . + 2;
call unexpected_nonpkt_phase_find_ctxt;
+ if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) {
+ and A, FIFO0FREE|FIFO1FREE, DFFSTAT;
+ cmp A, FIFO0FREE|FIFO1FREE jne . + 3;
+ and SBLKCTL, ~DIAGLEDEN|DIAGLEDON;
+ jmp . + 2;
+ or SBLKCTL, DIAGLEDEN|DIAGLEDON;
+ }
call idle_loop_gsfifo_in_scsi_mode;
call idle_loop_service_fifos;
call idle_loop_cchan;
@@ -101,8 +110,8 @@ idle_loop_gsfifo_in_scsi_mode:
test LQISTAT2, LQIGSAVAIL jz return;
/*
* We have received good status for this transaction. There may
- * still be data in our FIFOs draining to the host. Setup
- * monitoring of the draining process or complete the SCB.
+ * still be data in our FIFOs draining to the host. Complete
+ * the SCB only if all data has transferred to the host.
*/
good_status_IU_done:
bmov SCBPTR, GSFIFO, 2;
@@ -128,42 +137,20 @@ gsfifo_complete_normally:
* 1) Configured and draining to the host, with a FIFO handler.
* 2) Pending cfg4data, fifo not empty.
*
- * Case 1 can be detected by noticing that a longjmp is active for
- * the FIFO and LONGJMP_SCB matches our SCB. In this case, we allow
- * the routine servicing the FIFO to complete the SCB.
+ * Case 1 can be detected by noticing a non-zero FIFO active
+ * count in the SCB. In this case, we allow the routine servicing
+ * the FIFO to complete the SCB.
*
* Case 2 implies either a pending or yet to occur save data
* pointers for this same context in the other FIFO. So, if
* we detect case 1, we will properly defer the post of the SCB
* and achieve the desired result. The pending cfg4data will
* notice that status has been received and complete the SCB.
- *
- * If the data-transfer has been completed, or no data transfer
- * was needed for this SCB, it is safe to complete the command.
- */
- test SCB_SGPTR, SG_LIST_NULL jz good_status_check_fifos;
- /*
- * All segments have been loaded (or no data transfer), so
- * it is safe to complete the command. Since this was a
- * cheap command to check for completion, loop to see if
- * more entries can be removed from the GSFIFO.
*/
+ test SCB_FIFO_USE_COUNT, 0xFF jnz idle_loop_gsfifo_in_scsi_mode;
call complete;
END_CRITICAL;
jmp idle_loop_gsfifo_in_scsi_mode;
-BEGIN_CRITICAL;
-good_status_check_fifos:
- clc;
- bmov ARG_1, SCBPTR, 2;
- SET_MODE(M_DFF0, M_DFF0)
- call check_fifo;
- jc return;
- SET_MODE(M_DFF1, M_DFF1)
- call check_fifo;
- jc return;
- SET_MODE(M_SCSI, M_SCSI)
- jmp queue_scb_completion;
-END_CRITICAL;
idle_loop_service_fifos:
SET_MODE(M_DFF0, M_DFF0)
@@ -172,6 +159,7 @@ idle_loop_service_fifos:
idle_loop_next_fifo:
SET_MODE(M_DFF1, M_DFF1)
test LONGJMP_ADDR[1], INVALID_ADDR jz longjmp;
+return:
ret;
idle_loop_cchan:
@@ -189,12 +177,31 @@ END_CRITICAL;
scbdma_tohost_done:
test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone;
/*
- * A complete SCB upload requires no intervention.
- * The SCB is already on the COMPLETE_SCB list
- * and its completion notification will now be
- * handled just like any other SCB.
+ * An SCB has been succesfully uploaded to the host.
+ * If the SCB was uploaded for some reason other than
+ * bad SCSI status (currently only for underruns), we
+ * queue the SCB for normal completion. Otherwise, we
+ * wait until any select-out activity has halted, and
+ * then notify the host so that the transaction can be
+ * dealt with.
+ */
+ test SCB_SCSI_STATUS, 0xff jnz scbdma_notify_host;
+ and CCSCBCTL, ~(CCARREN|CCSCBEN);
+ bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2;
+ bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2;
+ bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret;
+scbdma_notify_host:
+ SET_MODE(M_SCSI, M_SCSI)
+ test SCSISEQ0, ENSELO jnz return;
+ test SSTAT0, (SELDO|SELINGO) jnz return;
+ SET_MODE(M_CCHAN, M_CCHAN)
+ /*
+ * Remove SCB and notify host.
*/
- and CCSCBCTL, ~(CCARREN|CCSCBEN) ret;
+ and CCSCBCTL, ~(CCARREN|CCSCBEN);
+ bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2;
+ SET_SEQINTCODE(BAD_SCB_STATUS)
+ ret;
fill_qoutfifo_dmadone:
and CCSCBCTL, ~(CCARREN|CCSCBEN);
call qoutfifo_updated;
@@ -256,6 +263,13 @@ fetch_new_scb_done:
clr A;
add CMDS_PENDING, 1;
adc CMDS_PENDING[1], A;
+ /*
+ * The FIFO use count field is shared with the
+ * tag set by the host so that our SCB dma engine
+ * knows the correct location to store the SCB.
+ * Set it to zero before processing the SCB.
+ */
+ mov SCB_FIFO_USE_COUNT, ALLZEROS;
/* Update the next SCB address to download. */
bmov NEXT_QUEUED_SCB_ADDR, SCB_NEXT_SCB_BUSADDR, 4;
mvi SCB_NEXT[1], SCB_LIST_NULL;
@@ -332,15 +346,7 @@ fetch_new_scb:
dma_complete_scb:
bmov SCBPTR, COMPLETE_DMA_SCB_HEAD, 2;
bmov SCBHADDR, SCB_BUSADDR, 4;
- mvi CCARREN|CCSCBEN|CCSCBRESET call dma_scb;
- /*
- * Now that we've started the DMA, push us onto
- * the normal completion queue to have our SCBID
- * posted to the kernel.
- */
- bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2;
- bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2;
- bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret;
+ mvi CCARREN|CCSCBEN|CCSCBRESET jmp dma_scb;
END_CRITICAL;
/*
@@ -359,8 +365,6 @@ dma_scb:
mov CCSCBCTL, SINDEX ret;
BEGIN_CRITICAL;
-setjmp_setscb:
- bmov LONGJMP_SCB, SCBPTR, 2;
setjmp:
bmov LONGJMP_ADDR, STACK, 2 ret;
setjmp_inline:
@@ -1028,9 +1032,18 @@ freeze_queue:
or SEQ_FLAGS2, SELECTOUT_QFROZEN;
mov A, ACCUM_SAVE ret;
-queue_arg1_scb_completion:
+/*
+ * Complete the current FIFO's SCB if data for this same
+ * SCB is not transferring in the other FIFO.
+ */
+SET_SRC_MODE M_DFF1;
+SET_DST_MODE M_DFF1;
+pkt_complete_scb_if_fifos_idle:
+ bmov ARG_1, SCBPTR, 2;
+ mvi DFFSXFRCTL, CLRCHN;
SET_MODE(M_SCSI, M_SCSI)
bmov SCBPTR, ARG_1, 2;
+ test SCB_FIFO_USE_COUNT, 0xFF jnz return;
queue_scb_completion:
test SCB_SCSI_STATUS,0xff jnz bad_status;
/*
@@ -1046,6 +1059,12 @@ bad_status:
cmp SCB_SCSI_STATUS, STATUS_PKT_SENSE je upload_scb;
call freeze_queue;
upload_scb:
+ /*
+ * Restore SCB TAG since we reuse this field
+ * in the sequencer. We don't want to corrupt
+ * it on the host.
+ */
+ bmov SCB_TAG, SCBPTR, 2;
bmov SCB_NEXT_COMPLETE, COMPLETE_DMA_SCB_HEAD, 2;
bmov COMPLETE_DMA_SCB_HEAD, SCBPTR, 2;
or SCB_SGPTR, SG_STATUS_VALID ret;
@@ -1356,7 +1375,7 @@ load_first_seg:
clr SG_STATE ret;
p_data_handle_xfer:
- call setjmp_setscb;
+ call setjmp;
test SG_STATE, LOADING_NEEDED jnz service_fifo;
p_data_clear_handler:
or LONGJMP_ADDR[1], INVALID_ADDR ret;
@@ -1609,25 +1628,32 @@ export seq_isr:
* and deffer the test by one instruction.
*/
mov REG_ISR, LQISTAT2;
- test REG_ISR, LQIWORKONLQ jz data_valid;
- test SEQINTSRC, SAVEPTRS jz data_valid;
+ test REG_ISR, LQIWORKONLQ jz main_isr;
+ test SEQINTSRC, SAVEPTRS jz main_isr;
test LONGJMP_ADDR[1], INVALID_ADDR jz saveptr_active_fifo;
/*
- * Switch to the active FIFO.
+ * Switch to the active FIFO after clearing the snapshot
+ * savepointer in the current FIFO. We do this so that
+ * a pending CTXTDONE or SAVEPTR is visible in the active
+ * FIFO. This status is the only way we can detect if we
+ * have lost the race (e.g. host paused us) and our attepts
+ * to disable the channel occurred after all REQs were
+ * already seen and acked (REQINIT never comes true).
*/
+ mvi DFFSXFRCTL, CLRCHN;
xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1);
- test DFCNTRL, DIRECTION jz snapshot_other_fifo;
+ test DFCNTRL, DIRECTION jz interrupt_return;
and DFCNTRL, ~SCSIEN;
- test SSTAT1, REQINIT jz .;
+snapshot_wait_data_valid:
+ test SEQINTSRC, (CTXTDONE|SAVEPTRS) jnz snapshot_data_valid;
+ test SSTAT1, REQINIT jz snapshot_wait_data_valid;
+snapshot_data_valid:
or DFCNTRL, SCSIEN;
- /* FALLTHROUGH */
-snapshot_other_fifo:
- xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1);
- /* FALLTHROUGH */
+ or SEQINTCTL, IRET ret;
snapshot_saveptr:
mvi DFFSXFRCTL, CLRCHN;
or SEQINTCTL, IRET ret;
-data_valid:
+main_isr:
}
test SEQINTSRC, CFG4DATA jnz cfg4data_intr;
test SEQINTSRC, CFG4ISTAT jnz cfg4istat_intr;
@@ -1660,9 +1686,11 @@ saveptr_active_fifo:
or SEQINTCTL, IRET ret;
cfg4data_intr:
- test SCB_SGPTR[0], SG_LIST_NULL jnz pkt_handle_overrun;
+ test SCB_SGPTR[0], SG_LIST_NULL jnz pkt_handle_overrun_inc_use_count;
call load_first_seg;
call pkt_handle_xfer;
+ inc SCB_FIFO_USE_COUNT;
+interrupt_return:
or SEQINTCTL, IRET ret;
cfg4istat_intr:
@@ -1722,7 +1750,6 @@ cfg4icmd_intr:
test DFSTATUS, FIFOEMP jz pkt_handle_overrun
pkt_handle_xfer:
- bmov LONGJMP_SCB, SCBPTR, 2;
test SG_STATE, LOADING_NEEDED jz pkt_last_seg;
call setjmp;
test SEQINTSRC, SAVEPTRS jnz pkt_saveptrs;
@@ -1744,7 +1771,7 @@ pkt_service_fifo:
pkt_last_seg:
call setjmp;
test SEQINTSRC, SAVEPTRS jnz pkt_saveptrs;
- test SG_CACHE_SHADOW, LAST_SEG_DONE jnz last_pkt_xfer_done;
+ test SG_CACHE_SHADOW, LAST_SEG_DONE jnz pkt_last_seg_done;
test SCSIPHASE, ~DATA_PHASE_MASK jz . + 2;
test SCSISIGO, ATNO jnz . + 2;
test SSTAT2, NONPACKREQ jz return;
@@ -1753,7 +1780,7 @@ pkt_last_seg:
/*
* Either a SAVEPTRS interrupt condition is pending for this FIFO
- * or we have a pending nonpackreq for this FIFO. We differentiate
+ * or we have a pending NONPACKREQ for this FIFO. We differentiate
* between the two by capturing the state of the SAVEPTRS interrupt
* prior to clearing this status and executing the common code for
* these two cases.
@@ -1782,118 +1809,134 @@ pkt_saveptrs_wait_fifoemp:
pkt_saveptrs_check_status:
or LONGJMP_ADDR[1], INVALID_ADDR;
test REG0, SAVEPTRS jz unexpected_nonpkt_phase;
- test SCB_CONTROL, STATUS_RCVD jz pkt_saveptrs_clrchn;
- jmp last_pkt_complete;
-pkt_saveptrs_clrchn:
+ dec SCB_FIFO_USE_COUNT;
+ test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle;
mvi DFFSXFRCTL, CLRCHN ret;
END_CRITICAL;
-last_pkt_xfer_done:
+/*
+ * LAST_SEG_DONE status has been seen in the current FIFO.
+ * This indicates that all of the allowed data for this
+ * command has transferred across the SCSI and host buses.
+ * Check for overrun and see if we can complete this command.
+ */
+pkt_last_seg_done:
BEGIN_CRITICAL;
- if ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0) {
- or DFCNTRL, FIFOFLUSH;
- }
- test SCB_CONTROL, STATUS_RCVD jz wait_pkt_end;
- check_overrun;
- or SCB_SGPTR, SG_LIST_NULL;
/*
- * It is safe to skip the other FIFO check since
- * we defer CLRCHN on SAVEPTRS until all data in
- * the FIFO are seen by the host and a CFG4DATA
- * in this FIFO for the same context is held off
- * by hardware.
+ * Mark transfer as completed.
*/
-last_pkt_queue_scb:
- or LONGJMP_ADDR[1], INVALID_ADDR;
- bmov ARG_1, SCBPTR, 2;
- mvi DFFSXFRCTL, CLRCHN;
- jmp queue_arg1_scb_completion;
-
-last_pkt_complete:
- bmov ARG_1, SCBPTR, 2;
- mvi DFFSXFRCTL, CLRCHN;
-check_other_fifo:
- clc;
- TOGGLE_DFF_MODE
- call check_fifo;
- jnc queue_arg1_scb_completion;
-return:
- ret;
+ or SCB_SGPTR, SG_LIST_NULL;
-wait_pkt_end:
+ /*
+ * Wait for the current context to finish to verify that
+ * no overrun condition has occurred.
+ */
+ test SEQINTSRC, CTXTDONE jnz pkt_ctxt_done;
call setjmp;
-END_CRITICAL;
-wait_pkt_end_loop:
- test SEQINTSRC, CTXTDONE jnz pkt_end;
+pkt_wait_ctxt_done_loop:
+ test SEQINTSRC, CTXTDONE jnz pkt_ctxt_done;
+ /*
+ * A sufficiently large overrun or a NONPACKREQ may
+ * prevent CTXTDONE from ever asserting, so we must
+ * poll for these statuses too.
+ */
check_overrun;
test SSTAT2, NONPACKREQ jz return;
test SEQINTSRC, CTXTDONE jz unexpected_nonpkt_phase;
-pkt_end:
-BEGIN_CRITICAL;
+ /* FALLTHROUGH */
+
+pkt_ctxt_done:
check_overrun;
or LONGJMP_ADDR[1], INVALID_ADDR;
- or SCB_SGPTR, SG_LIST_NULL;
- test SCB_CONTROL, STATUS_RCVD jnz last_pkt_complete;
+ /*
+ * If status has been received, it is safe to skip
+ * the check to see if another FIFO is active because
+ * LAST_SEG_DONE has been observed. However, we check
+ * the FIFO anyway since it costs us only one extra
+ * instruction to leverage common code to perform the
+ * SCB completion.
+ */
+ dec SCB_FIFO_USE_COUNT;
+ test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle;
mvi DFFSXFRCTL, CLRCHN ret;
END_CRITICAL;
/*
+ * Must wait until CDB xfer is over before issuing the
+ * clear channel.
+ */
+pkt_handle_cdb:
+ call setjmp;
+ test SG_CACHE_SHADOW, LAST_SEG_DONE jz return;
+ or LONGJMP_ADDR[1], INVALID_ADDR;
+ mvi DFFSXFRCTL, CLRCHN ret;
+
+/*
* Watch over the status transfer. Our host sense buffer is
* large enough to take the maximum allowed status packet.
* None-the-less, we must still catch and report overruns to
- * the host.
+ * the host. Additionally, properly catch unexpected non-packet
+ * phases that are typically caused by CRC errors in status packet
+ * transmission.
*/
pkt_handle_status:
- call setjmp_setscb;
- test SG_CACHE_SHADOW, LAST_SEG_DONE jz check_status_overrun;
- test SEQINTSRC, CTXTDONE jz return;
-status_IU_done:
-BEGIN_CRITICAL;
+ call setjmp;
+ test SG_CACHE_SHADOW, LAST_SEG_DONE jnz pkt_status_check_overrun;
+ test SEQINTSRC, CTXTDONE jz pkt_status_check_nonpackreq;
+ test SG_CACHE_SHADOW, LAST_SEG_DONE jnz pkt_status_check_overrun;
+pkt_status_IU_done:
if ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0) {
or DFCNTRL, FIFOFLUSH;
}
+ test DFSTATUS, FIFOEMP jz return;
+BEGIN_CRITICAL;
or LONGJMP_ADDR[1], INVALID_ADDR;
mvi SCB_SCSI_STATUS, STATUS_PKT_SENSE;
or SCB_CONTROL, STATUS_RCVD;
- jmp last_pkt_complete;
+ jmp pkt_complete_scb_if_fifos_idle;
END_CRITICAL;
-check_status_overrun:
- /*
- * We've filled the entire sense buffer.
- * Wait for either context done or a negative
- * shaddow count. If the context completes without
- * causing the shaddow count to go negative, then
- * this was a successful transfer up to the status
- * limit. Otherwise we report the error.
- */
- test SHCNT[2], 0xFF jnz report_status_overrun;
- test SEQINTSRC, CTXTDONE jz return;
- test SHCNT[2], 0xFF jz status_IU_done;
-report_status_overrun:
+pkt_status_check_overrun:
+ /*
+ * Status PKT overruns are uncerimoniously recovered with a
+ * bus reset. If we've overrun, let the host know so that
+ * recovery can be performed.
+ *
+ * LAST_SEG_DONE has been observed. If either CTXTDONE or
+ * a NONPACKREQ phase change have occurred and the FIFO is
+ * empty, there is no overrun.
+ */
+ test DFSTATUS, FIFOEMP jz pkt_status_report_overrun;
+ test SEQINTSRC, CTXTDONE jz . + 2;
+ test DFSTATUS, FIFOEMP jnz pkt_status_IU_done;
+ test SCSIPHASE, ~DATA_PHASE_MASK jz return;
+ test DFSTATUS, FIFOEMP jnz pkt_status_check_nonpackreq;
+pkt_status_report_overrun:
SET_SEQINTCODE(STATUS_OVERRUN)
- jmp status_IU_done;
-
-SET_SRC_MODE M_DFF0;
-SET_DST_MODE M_DFF0;
-BEGIN_CRITICAL;
-check_fifo:
- test LONGJMP_ADDR[1], INVALID_ADDR jnz return;
- mov A, ARG_2;
- cmp LONGJMP_SCB[1], A jne return;
- mov A, ARG_1;
- cmp LONGJMP_SCB[0], A jne return;
- stc ret;
-END_CRITICAL;
-
-/*
- * Must wait until CDB xfer is over before issuing the
- * clear channel.
- */
-pkt_handle_cdb:
- call setjmp_setscb;
- test SG_CACHE_SHADOW, LAST_SEG_DONE jz return;
- or LONGJMP_ADDR[1], INVALID_ADDR;
- mvi DFFSXFRCTL, CLRCHN ret;
+ /* SEQUENCER RESTARTED */
+pkt_status_check_nonpackreq:
+ /*
+ * CTXTDONE may be held off if a NONPACKREQ is associated with
+ * the current context. If a NONPACKREQ is observed, decide
+ * if it is for the current context. If it is for the current
+ * context, we must defer NONPACKREQ processing until all data
+ * has transferred to the host.
+ */
+ test SCSIPHASE, ~DATA_PHASE_MASK jz return;
+ test SCSISIGO, ATNO jnz . + 2;
+ test SSTAT2, NONPACKREQ jz return;
+ test SEQINTSRC, CTXTDONE jnz pkt_status_IU_done;
+ test DFSTATUS, FIFOEMP jz return;
+ /*
+ * The unexpected nonpkt phase handler assumes that any
+ * data channel use will have a FIFO reference count. It
+ * turns out that the status handler doesn't need a refernce
+ * count since the status received flag, and thus completion
+ * processing, cannot be set until the handler is finished.
+ * We increment the count here to make the nonpkt handler
+ * happy.
+ */
+ inc SCB_FIFO_USE_COUNT;
+ /* FALLTHROUGH */
/*
* Nonpackreq is a polled status. It can come true in three situations:
@@ -1922,6 +1965,7 @@ unexpected_nonpkt_phase:
SET_SRC_MODE M_DFF0;
SET_DST_MODE M_DFF0;
or LONGJMP_ADDR[1], INVALID_ADDR;
+ dec SCB_FIFO_USE_COUNT;
mvi DFFSXFRCTL, CLRCHN;
mvi CLRSINT2, CLRNONPACKREQ;
test SCSIPHASE, ~(MSG_IN_PHASE|MSG_OUT_PHASE) jnz illegal_phase;
@@ -1938,6 +1982,8 @@ illegal_phase:
* data. Otherwise use an overrun buffer in the host to simulate
* BITBUCKET.
*/
+pkt_handle_overrun_inc_use_count:
+ inc SCB_FIFO_USE_COUNT;
pkt_handle_overrun:
SET_SEQINTCODE(CFG4OVERRUN)
call freeze_queue;
@@ -1963,8 +2009,9 @@ overrun_load_done:
pkt_overrun_end:
or SCB_RESIDUAL_SGPTR, SG_OVERRUN_RESID;
test SEQINTSRC, CTXTDONE jz unexpected_nonpkt_phase;
- test SCB_CONTROL, STATUS_RCVD jnz last_pkt_queue_scb;
+ dec SCB_FIFO_USE_COUNT;
or LONGJMP_ADDR[1], INVALID_ADDR;
+ test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle;
mvi DFFSXFRCTL, CLRCHN ret;
if ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0) {
diff --git a/sys/dev/microcode/aic7xxx/aic79xx_reg.h b/sys/dev/microcode/aic7xxx/aic79xx_reg.h
index 4c437c05015..f709a642a38 100644
--- a/sys/dev/microcode/aic7xxx/aic79xx_reg.h
+++ b/sys/dev/microcode/aic7xxx/aic79xx_reg.h
@@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
- * $NetBSD: aic79xx_reg.h,v 1.3 2003/05/14 12:57:46 wiz Exp $
- * $NetBSD: aic79xx_reg.h,v 1.3 2003/05/14 12:57:46 wiz Exp $
+ * Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#91 $
+ * Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $
*/
typedef int (ahd_reg_print_t)(u_int, u_int *, u_int);
typedef struct ahd_reg_parse_entry {
@@ -1924,17 +1924,10 @@ ahd_reg_print_t ahd_longjmp_addr_print;
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_longjmp_scb_print;
-#else
-#define ahd_longjmp_scb_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "LONGJMP_SCB", 0xfa, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
ahd_reg_print_t ahd_accum_save_print;
#else
#define ahd_accum_save_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "ACCUM_SAVE", 0xfc, regvalue, cur_col, wrap)
+ ahd_print_register(NULL, 0, "ACCUM_SAVE", 0xfa, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
@@ -2246,59 +2239,45 @@ ahd_reg_print_t ahd_scb_sense_busaddr_print;
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_tag_print;
-#else
-#define ahd_scb_tag_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_TAG", 0x190, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_cdb_len_print;
-#else
-#define ahd_scb_cdb_len_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_CDB_LEN", 0x192, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_task_management_print;
+ahd_reg_print_t ahd_scb_dataptr_print;
#else
-#define ahd_scb_task_management_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_TASK_MANAGEMENT", 0x193, regvalue, cur_col, wrap)
+#define ahd_scb_dataptr_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_DATAPTR", 0x190, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_next_print;
+ahd_reg_print_t ahd_scb_datacnt_print;
#else
-#define ahd_scb_next_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_NEXT", 0x194, regvalue, cur_col, wrap)
+#define ahd_scb_datacnt_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_DATACNT", 0x198, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_next2_print;
+ahd_reg_print_t ahd_scb_sgptr_print;
#else
-#define ahd_scb_next2_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_NEXT2", 0x196, regvalue, cur_col, wrap)
+#define ahd_scb_sgptr_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_SGPTR", 0x19c, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_dataptr_print;
+ahd_reg_print_t ahd_scb_busaddr_print;
#else
-#define ahd_scb_dataptr_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_DATAPTR", 0x198, regvalue, cur_col, wrap)
+#define ahd_scb_busaddr_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_BUSADDR", 0x1a0, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_datacnt_print;
+ahd_reg_print_t ahd_scb_next_print;
#else
-#define ahd_scb_datacnt_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_DATACNT", 0x1a0, regvalue, cur_col, wrap)
+#define ahd_scb_next_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_NEXT", 0x1a4, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_sgptr_print;
+ahd_reg_print_t ahd_scb_next2_print;
#else
-#define ahd_scb_sgptr_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_SGPTR", 0x1a4, regvalue, cur_col, wrap)
+#define ahd_scb_next2_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_NEXT2", 0x1a6, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
@@ -2330,10 +2309,24 @@ ahd_reg_print_t ahd_scb_task_attribute_print;
#endif
#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_busaddr_print;
+ahd_reg_print_t ahd_scb_cdb_len_print;
#else
-#define ahd_scb_busaddr_print(regvalue, cur_col, wrap) \
- ahd_print_register(NULL, 0, "SCB_BUSADDR", 0x1ac, regvalue, cur_col, wrap)
+#define ahd_scb_cdb_len_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_CDB_LEN", 0x1ac, regvalue, cur_col, wrap)
+#endif
+
+#if AIC_DEBUG_REGISTERS
+ahd_reg_print_t ahd_scb_task_management_print;
+#else
+#define ahd_scb_task_management_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_TASK_MANAGEMENT", 0x1ad, regvalue, cur_col, wrap)
+#endif
+
+#if AIC_DEBUG_REGISTERS
+ahd_reg_print_t ahd_scb_tag_print;
+#else
+#define ahd_scb_tag_print(regvalue, cur_col, wrap) \
+ ahd_print_register(NULL, 0, "SCB_TAG", 0x1ae, regvalue, cur_col, wrap)
#endif
#if AIC_DEBUG_REGISTERS
@@ -2367,6 +2360,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
#define SPLTINT 0x01
#define SEQINTCODE 0x02
+#define BAD_SCB_STATUS 0x1a
#define SAW_HWERR 0x19
#define TRACEPOINT3 0x18
#define TRACEPOINT2 0x17
@@ -2438,7 +2432,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
#define HS_MAILBOX 0x0b
#define HOST_TQINPOS 0x80
-#define ENINT_COALESCE 0x40
+#define ENINT_COALESCE 0x40
#define SEQINTSTAT 0x0c
#define SEQ_SWTMRTO 0x10
@@ -3508,9 +3502,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
#define LONGJMP_ADDR 0xf8
-#define LONGJMP_SCB 0xfa
-
-#define ACCUM_SAVE 0xfc
+#define ACCUM_SAVE 0xfa
#define AHD_PCI_CONFIG_BASE 0x100
@@ -3656,29 +3648,24 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
#define SCB_SENSE_BUSADDR 0x18c
#define SCB_NEXT_COMPLETE 0x18c
-#define SCB_TAG 0x190
-
-#define SCB_CDB_LEN 0x192
-#define SCB_CDB_LEN_PTR 0x80
-
-#define SCB_TASK_MANAGEMENT 0x193
-
-#define SCB_NEXT 0x194
-#define SCB_NEXT_SCB_BUSADDR 0x194
+#define SCB_DATAPTR 0x190
-#define SCB_NEXT2 0x196
-
-#define SCB_DATAPTR 0x198
-
-#define SCB_DATACNT 0x1a0
+#define SCB_DATACNT 0x198
#define SG_LAST_SEG 0x80
#define SG_HIGH_ADDR_BITS 0x7f
-#define SCB_SGPTR 0x1a4
+#define SCB_SGPTR 0x19c
#define SG_STATUS_VALID 0x04
#define SG_FULL_RESID 0x02
#define SG_LIST_NULL 0x01
+#define SCB_BUSADDR 0x1a0
+
+#define SCB_NEXT 0x1a4
+#define SCB_NEXT_SCB_BUSADDR 0x1a4
+
+#define SCB_NEXT2 0x1a6
+
#define SCB_CONTROL 0x1a8
#define TARGET_SCB 0x80
#define DISCENB 0x40
@@ -3697,7 +3684,13 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
#define SCB_TASK_ATTRIBUTE 0x1ab
-#define SCB_BUSADDR 0x1ac
+#define SCB_CDB_LEN 0x1ac
+#define SCB_CDB_LEN_PTR 0x80
+
+#define SCB_TASK_MANAGEMENT 0x1ad
+
+#define SCB_TAG 0x1ae
+#define SCB_FIFO_USE_COUNT 0x1ae
#define SCB_SPARE 0x1b0
#define SCB_PKT_LUN 0x1b0
@@ -3775,5 +3768,5 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
/* Exported Labels */
-#define LABEL_seq_isr 0x268
-#define LABEL_timer_isr 0x264
+#define LABEL_seq_isr 0x270
+#define LABEL_timer_isr 0x26c
diff --git a/sys/dev/microcode/aic7xxx/aic79xx_seq.h b/sys/dev/microcode/aic7xxx/aic79xx_seq.h
index fbf8805360d..210c6b53e93 100644
--- a/sys/dev/microcode/aic7xxx/aic79xx_seq.h
+++ b/sys/dev/microcode/aic7xxx/aic79xx_seq.h
@@ -2,97 +2,104 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
- * $NetBSD: aic79xx_seq.h,v 1.2 2003/04/20 11:20:52 fvdl Exp $
- * $NetBSD: aic79xx_seq.h,v 1.2 2003/04/20 11:20:52 fvdl Exp $
+ * Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#91 $
+ * Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $
*/
static uint8_t seqprog[] = {
0xff, 0x02, 0x06, 0x78,
- 0x00, 0xea, 0x46, 0x59,
+ 0x00, 0xea, 0x4e, 0x59,
0x01, 0xea, 0x04, 0x30,
0xff, 0x04, 0x0c, 0x78,
- 0x19, 0xea, 0x46, 0x59,
+ 0x19, 0xea, 0x4e, 0x59,
0x19, 0xea, 0x04, 0x00,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
0x60, 0x3a, 0x1a, 0x68,
0x04, 0x47, 0x1b, 0x68,
0xff, 0x21, 0x1b, 0x70,
- 0x40, 0x4b, 0x88, 0x69,
- 0x00, 0xe2, 0x4a, 0x59,
- 0x40, 0x4b, 0x88, 0x69,
- 0x20, 0x4b, 0x78, 0x69,
+ 0x40, 0x4b, 0x90, 0x69,
+ 0x00, 0xe2, 0x52, 0x59,
+ 0x40, 0x4b, 0x90, 0x69,
+ 0x20, 0x4b, 0x80, 0x69,
0xfc, 0x42, 0x24, 0x78,
0x10, 0x40, 0x24, 0x78,
- 0x00, 0xe2, 0xd6, 0x5d,
+ 0x00, 0xe2, 0xd2, 0x5d,
0x20, 0x4d, 0x28, 0x78,
- 0x00, 0xe2, 0xd6, 0x5d,
- 0x00, 0xe2, 0x34, 0x58,
+ 0x00, 0xe2, 0xd2, 0x5d,
+ 0x30, 0x3f, 0xc0, 0x09,
+ 0x30, 0xe0, 0x30, 0x60,
+ 0x7f, 0x4a, 0x94, 0x08,
+ 0x00, 0xe2, 0x32, 0x40,
+ 0xc0, 0x4a, 0x94, 0x00,
+ 0x00, 0xe2, 0x3e, 0x58,
+ 0x00, 0xe2, 0x56, 0x58,
0x00, 0xe2, 0x66, 0x58,
- 0x00, 0xe2, 0x76, 0x58,
0x00, 0xe2, 0x06, 0x40,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
- 0x01, 0x52, 0x8c, 0x7d,
+ 0x01, 0x52, 0x64, 0x78,
0x02, 0x58, 0x50, 0x31,
0xff, 0xea, 0x10, 0x0b,
- 0xff, 0x93, 0x45, 0x78,
- 0x50, 0x4b, 0x40, 0x68,
+ 0xff, 0xad, 0x4f, 0x78,
+ 0x50, 0x4b, 0x4a, 0x68,
0xbf, 0x3a, 0x74, 0x08,
- 0x14, 0xea, 0x46, 0x59,
+ 0x14, 0xea, 0x4e, 0x59,
0x14, 0xea, 0x04, 0x00,
0x08, 0xa8, 0x51, 0x03,
- 0x01, 0xa4, 0x4d, 0x78,
- 0x00, 0xe2, 0x42, 0x5b,
- 0x00, 0xe2, 0x34, 0x40,
- 0xff, 0xea, 0xd4, 0x19,
- 0x02, 0xa8, 0x84, 0x32,
- 0x00, 0xea, 0x3a, 0x59,
- 0x01, 0xea, 0x00, 0x30,
- 0x00, 0xe2, 0xc2, 0x5d,
- 0x00, 0xe2, 0x8c, 0x4d,
- 0x11, 0xea, 0x3a, 0x59,
- 0x11, 0xea, 0x00, 0x00,
- 0x00, 0xe2, 0xc2, 0x5d,
- 0x00, 0xe2, 0x8c, 0x4d,
- 0x33, 0xea, 0x3a, 0x59,
- 0x33, 0xea, 0x00, 0x00,
- 0x00, 0xe2, 0x3a, 0x43,
- 0x00, 0xea, 0x3a, 0x59,
+ 0xff, 0xae, 0x3f, 0x68,
+ 0x00, 0xe2, 0x50, 0x5b,
+ 0x00, 0xe2, 0x3e, 0x40,
+ 0x00, 0xea, 0x42, 0x59,
0x01, 0xea, 0x00, 0x30,
- 0x80, 0xf9, 0x6e, 0x68,
- 0x00, 0xe2, 0x38, 0x59,
- 0x11, 0xea, 0x3a, 0x59,
+ 0x80, 0xf9, 0x5e, 0x68,
+ 0x00, 0xe2, 0x40, 0x59,
+ 0x11, 0xea, 0x42, 0x59,
0x11, 0xea, 0x00, 0x00,
- 0x80, 0xf9, 0x38, 0x79,
+ 0x80, 0xf9, 0x40, 0x79,
0xff, 0xea, 0xd4, 0x0d,
- 0x22, 0xea, 0x3a, 0x59,
+ 0x22, 0xea, 0x42, 0x59,
0x22, 0xea, 0x00, 0x00,
- 0x10, 0x16, 0x80, 0x78,
+ 0x10, 0x16, 0x70, 0x78,
0x01, 0x0b, 0xa2, 0x32,
0x10, 0x16, 0x2c, 0x00,
- 0x18, 0xad, 0xee, 0x78,
- 0x04, 0xad, 0xbc, 0x68,
- 0x80, 0xad, 0x8c, 0x7d,
- 0x10, 0xad, 0x8a, 0x78,
- 0xe7, 0xad, 0x5a, 0x0d,
+ 0x18, 0xad, 0xfe, 0x78,
+ 0x04, 0xad, 0xca, 0x68,
+ 0x80, 0xad, 0x64, 0x78,
+ 0x10, 0xad, 0x98, 0x78,
+ 0xff, 0x88, 0x83, 0x68,
0xe7, 0xad, 0x5a, 0x09,
- 0x00, 0xe2, 0x98, 0x58,
+ 0x02, 0x8c, 0x59, 0x32,
+ 0x02, 0x28, 0x19, 0x33,
+ 0x02, 0xa8, 0x50, 0x36,
+ 0x33, 0xea, 0x42, 0x59,
+ 0x33, 0xea, 0x00, 0x00,
+ 0x40, 0x3a, 0x64, 0x68,
+ 0x50, 0x4b, 0x64, 0x68,
+ 0x22, 0xea, 0x42, 0x59,
+ 0x22, 0xea, 0x00, 0x00,
+ 0xe7, 0xad, 0x5a, 0x09,
+ 0x02, 0x8c, 0x59, 0x32,
+ 0x1a, 0xea, 0x4e, 0x59,
+ 0x1a, 0xea, 0x04, 0x00,
+ 0xff, 0xea, 0xd4, 0x0d,
+ 0xe7, 0xad, 0x5a, 0x09,
+ 0x00, 0xe2, 0xa6, 0x58,
0xff, 0xea, 0x56, 0x02,
0x04, 0x7c, 0x78, 0x32,
- 0x20, 0x16, 0x8c, 0x7d,
+ 0x20, 0x16, 0x64, 0x78,
0x04, 0x38, 0x79, 0x32,
0x80, 0x37, 0x6f, 0x16,
- 0xff, 0x2d, 0xa7, 0x60,
- 0xff, 0x29, 0xa7, 0x60,
- 0x40, 0x51, 0xb7, 0x78,
- 0xff, 0x4f, 0xa7, 0x68,
+ 0xff, 0x2d, 0xb5, 0x60,
+ 0xff, 0x29, 0xb5, 0x60,
+ 0x40, 0x51, 0xc5, 0x78,
+ 0xff, 0x4f, 0xb5, 0x68,
0xff, 0x4d, 0xc1, 0x19,
0x00, 0x4e, 0xd5, 0x19,
- 0x00, 0xe2, 0xb6, 0x50,
+ 0x00, 0xe2, 0xc4, 0x50,
0x01, 0x4c, 0xc1, 0x31,
0x00, 0x50, 0xd5, 0x19,
- 0x00, 0xe2, 0xb6, 0x48,
- 0x80, 0x18, 0x8c, 0x7d,
+ 0x00, 0xe2, 0xc4, 0x48,
+ 0x80, 0x18, 0x64, 0x78,
0x02, 0x4a, 0x1d, 0x30,
0x10, 0xea, 0x18, 0x00,
0x60, 0x18, 0x30, 0x00,
@@ -100,35 +107,36 @@ static uint8_t seqprog[] = {
0x02, 0xea, 0x02, 0x00,
0xff, 0xea, 0xa0, 0x0a,
0x80, 0x18, 0x30, 0x04,
- 0x40, 0xad, 0x8c, 0x7d,
+ 0x40, 0xad, 0x64, 0x78,
0xe7, 0xad, 0x5a, 0x09,
0x02, 0xa8, 0x40, 0x31,
0xff, 0xea, 0xc0, 0x09,
0x01, 0x4e, 0x9d, 0x1a,
0x00, 0x4f, 0x9f, 0x22,
- 0x04, 0x94, 0x49, 0x32,
- 0xff, 0xea, 0x2a, 0x03,
- 0xff, 0xea, 0x2e, 0x03,
+ 0x01, 0xea, 0x5c, 0x33,
+ 0x04, 0xa4, 0x49, 0x32,
+ 0xff, 0xea, 0x4a, 0x03,
+ 0xff, 0xea, 0x4e, 0x03,
0x01, 0x10, 0xd4, 0x31,
- 0x10, 0xa8, 0xe3, 0x68,
+ 0x10, 0xa8, 0xf3, 0x68,
0x3d, 0xa9, 0xc5, 0x29,
0xfe, 0xe2, 0xc4, 0x09,
0x01, 0xea, 0xc6, 0x01,
0x02, 0xe2, 0xc8, 0x31,
0x02, 0xec, 0x50, 0x31,
0x02, 0xa0, 0xda, 0x31,
- 0xff, 0xa9, 0xe2, 0x70,
- 0x02, 0xa0, 0x28, 0x37,
- 0xff, 0x21, 0xeb, 0x70,
+ 0xff, 0xa9, 0xf2, 0x70,
+ 0x02, 0xa0, 0x48, 0x37,
+ 0xff, 0x21, 0xfb, 0x70,
0x02, 0x22, 0x51, 0x31,
- 0x02, 0xa0, 0x2c, 0x33,
+ 0x02, 0xa0, 0x4c, 0x33,
0x02, 0xa0, 0x44, 0x36,
0x02, 0xa0, 0x40, 0x32,
0x02, 0xa0, 0x44, 0x36,
- 0x04, 0x47, 0xf3, 0x68,
- 0x40, 0x16, 0x1e, 0x69,
- 0xff, 0x2d, 0x23, 0x61,
- 0xff, 0x29, 0x8d, 0x75,
+ 0x04, 0x47, 0x03, 0x69,
+ 0x40, 0x16, 0x2e, 0x69,
+ 0xff, 0x2d, 0x33, 0x61,
+ 0xff, 0x29, 0x65, 0x70,
0x01, 0x37, 0xc1, 0x31,
0x02, 0x28, 0x55, 0x32,
0x01, 0xea, 0x5a, 0x01,
@@ -140,26 +148,22 @@ static uint8_t seqprog[] = {
0x01, 0x50, 0xa1, 0x1a,
0xff, 0x4e, 0x9d, 0x1a,
0xff, 0x4f, 0x9f, 0x22,
- 0xff, 0x8d, 0x17, 0x71,
- 0x80, 0xac, 0x16, 0x71,
- 0x20, 0x16, 0x16, 0x69,
+ 0xff, 0x8d, 0x27, 0x71,
+ 0x80, 0xac, 0x26, 0x71,
+ 0x20, 0x16, 0x26, 0x69,
0x02, 0x8c, 0x51, 0x31,
- 0x00, 0xe2, 0x00, 0x41,
+ 0x00, 0xe2, 0x10, 0x41,
0x01, 0xac, 0x08, 0x31,
0x09, 0xea, 0x5a, 0x01,
0x02, 0x8c, 0x51, 0x32,
0xff, 0xea, 0x1a, 0x07,
0x04, 0x24, 0xf9, 0x30,
- 0x1d, 0xea, 0x2e, 0x41,
+ 0x1d, 0xea, 0x38, 0x41,
0x02, 0x2c, 0x51, 0x31,
- 0x04, 0xac, 0xf9, 0x30,
- 0x19, 0xea, 0x2e, 0x59,
- 0x02, 0x8c, 0x59, 0x32,
- 0x02, 0x28, 0x19, 0x33,
- 0x02, 0xa8, 0x50, 0x36,
+ 0x04, 0xa0, 0xf9, 0x30,
+ 0x19, 0xea, 0x38, 0x41,
0x06, 0xea, 0x08, 0x81,
0x01, 0xe2, 0x5a, 0x35,
- 0x02, 0xa8, 0xf4, 0x31,
0x02, 0xf2, 0xf0, 0x35,
0x02, 0xf2, 0xf0, 0x31,
0x02, 0xf8, 0xe4, 0x35,
@@ -175,23 +179,23 @@ static uint8_t seqprog[] = {
0x02, 0x20, 0xb9, 0x30,
0x02, 0x20, 0x51, 0x31,
0x4c, 0xa9, 0xd7, 0x28,
- 0x10, 0xa8, 0x59, 0x79,
+ 0x10, 0xa8, 0x61, 0x79,
0x01, 0x6b, 0xc0, 0x30,
0x02, 0x64, 0xc8, 0x00,
0x40, 0x3a, 0x74, 0x04,
- 0x00, 0xe2, 0x66, 0x58,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x00, 0xe2, 0x56, 0x58,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
0x30, 0x3f, 0xc0, 0x09,
- 0x30, 0xe0, 0x5a, 0x61,
- 0x20, 0x3f, 0x70, 0x69,
- 0x10, 0x3f, 0x5a, 0x79,
+ 0x30, 0xe0, 0x62, 0x61,
+ 0x20, 0x3f, 0x78, 0x69,
+ 0x10, 0x3f, 0x62, 0x79,
0x02, 0xea, 0x7e, 0x00,
- 0x00, 0xea, 0x3a, 0x59,
+ 0x00, 0xea, 0x42, 0x59,
0x01, 0xea, 0x00, 0x30,
0x02, 0x48, 0x51, 0x35,
0x01, 0xea, 0x7e, 0x00,
- 0x11, 0xea, 0x3a, 0x59,
+ 0x11, 0xea, 0x42, 0x59,
0x11, 0xea, 0x00, 0x00,
0x02, 0x48, 0x51, 0x35,
0x08, 0xea, 0x98, 0x00,
@@ -201,11 +205,11 @@ static uint8_t seqprog[] = {
0x0f, 0x67, 0xc0, 0x09,
0x00, 0x34, 0x69, 0x02,
0x20, 0xea, 0x96, 0x00,
- 0x00, 0xe2, 0xee, 0x41,
- 0x40, 0x3a, 0xa4, 0x69,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x40, 0x3a, 0xac, 0x69,
0x02, 0x55, 0x06, 0x68,
- 0x02, 0x56, 0xa4, 0x69,
- 0xff, 0x5b, 0xa4, 0x61,
+ 0x02, 0x56, 0xac, 0x69,
+ 0xff, 0x5b, 0xac, 0x61,
0x02, 0x20, 0x51, 0x31,
0x80, 0xea, 0xb2, 0x01,
0x44, 0xea, 0x00, 0x00,
@@ -213,36 +217,36 @@ static uint8_t seqprog[] = {
0x33, 0xea, 0x00, 0x00,
0xff, 0xea, 0xb2, 0x09,
0xff, 0xe0, 0xc0, 0x19,
- 0xff, 0xe0, 0xa6, 0x79,
- 0x02, 0x94, 0x51, 0x31,
- 0x00, 0xe2, 0x9c, 0x41,
+ 0xff, 0xe0, 0xae, 0x79,
+ 0x02, 0xa4, 0x51, 0x31,
+ 0x00, 0xe2, 0xa4, 0x41,
0x02, 0x5e, 0x50, 0x31,
0x02, 0xa8, 0xb8, 0x30,
0x02, 0x5c, 0x50, 0x31,
- 0xff, 0x95, 0xb7, 0x71,
- 0x02, 0x94, 0x41, 0x31,
+ 0xff, 0xa5, 0xbf, 0x71,
+ 0x02, 0xa4, 0x41, 0x31,
0x02, 0x22, 0x51, 0x31,
- 0x02, 0xa0, 0x2c, 0x33,
+ 0x02, 0xa0, 0x4c, 0x33,
0x02, 0xa0, 0x44, 0x32,
- 0x00, 0xe2, 0xc0, 0x41,
- 0x10, 0xa8, 0xc1, 0x69,
+ 0x00, 0xe2, 0xc8, 0x41,
+ 0x10, 0xa8, 0xc9, 0x69,
0x3d, 0xa9, 0xc9, 0x29,
0x01, 0xe4, 0xc8, 0x01,
0x01, 0xea, 0xca, 0x01,
0xff, 0xea, 0xda, 0x01,
0x02, 0x20, 0x51, 0x31,
- 0x02, 0x96, 0x41, 0x32,
- 0xff, 0x21, 0xc9, 0x61,
+ 0x02, 0xa6, 0x41, 0x32,
+ 0xff, 0x21, 0xd1, 0x61,
0xff, 0xea, 0x46, 0x02,
0x02, 0x5c, 0x50, 0x31,
0x40, 0xea, 0x96, 0x00,
- 0x02, 0x56, 0xde, 0x6d,
- 0x01, 0x55, 0xde, 0x6d,
- 0x10, 0xa8, 0xd5, 0x79,
- 0x10, 0x40, 0xde, 0x69,
- 0x01, 0x56, 0xde, 0x79,
- 0xff, 0x93, 0x07, 0x78,
- 0x13, 0xea, 0x46, 0x59,
+ 0x02, 0x56, 0xda, 0x6d,
+ 0x01, 0x55, 0xda, 0x6d,
+ 0x10, 0xa8, 0xdd, 0x79,
+ 0x10, 0x40, 0xe6, 0x69,
+ 0x01, 0x56, 0xe6, 0x79,
+ 0xff, 0xad, 0x07, 0x78,
+ 0x13, 0xea, 0x4e, 0x59,
0x13, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x06, 0x40,
0xbf, 0x3a, 0x74, 0x08,
@@ -253,104 +257,104 @@ static uint8_t seqprog[] = {
0x40, 0xea, 0x66, 0x02,
0x08, 0x3c, 0x78, 0x00,
0x80, 0xea, 0x62, 0x02,
- 0x00, 0xe2, 0xa2, 0x5b,
+ 0x00, 0xe2, 0xb2, 0x5b,
0x01, 0x36, 0xc1, 0x31,
- 0x9f, 0xe0, 0x44, 0x7c,
- 0x80, 0xe0, 0x02, 0x72,
- 0xa0, 0xe0, 0x3a, 0x72,
- 0xc0, 0xe0, 0x30, 0x72,
- 0xe0, 0xe0, 0x6a, 0x72,
- 0x01, 0xea, 0x46, 0x59,
+ 0x9f, 0xe0, 0x54, 0x7c,
+ 0x80, 0xe0, 0x0a, 0x72,
+ 0xa0, 0xe0, 0x42, 0x72,
+ 0xc0, 0xe0, 0x38, 0x72,
+ 0xe0, 0xe0, 0x72, 0x72,
+ 0x01, 0xea, 0x4e, 0x59,
0x01, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xee, 0x41,
- 0x80, 0x33, 0x09, 0x7a,
- 0x03, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x80, 0x33, 0x11, 0x7a,
+ 0x03, 0xea, 0x4e, 0x59,
0x03, 0xea, 0x04, 0x00,
- 0xee, 0x00, 0x10, 0x6a,
+ 0xee, 0x00, 0x18, 0x6a,
0x05, 0xea, 0xb4, 0x00,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
0x02, 0xa8, 0x90, 0x32,
- 0x00, 0xe2, 0x60, 0x59,
- 0xef, 0x92, 0xd5, 0x19,
- 0x00, 0xe2, 0x20, 0x52,
+ 0x00, 0xe2, 0x68, 0x59,
+ 0xef, 0xac, 0xd5, 0x19,
+ 0x00, 0xe2, 0x28, 0x52,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
- 0x00, 0xe2, 0x26, 0x42,
- 0x01, 0x92, 0xd1, 0x30,
+ 0x00, 0xe2, 0x2e, 0x42,
+ 0x01, 0xac, 0xd1, 0x30,
0x10, 0x80, 0x89, 0x31,
0x20, 0xea, 0x32, 0x00,
0xbf, 0x33, 0x67, 0x0a,
- 0x20, 0x19, 0x28, 0x6a,
- 0x02, 0x4d, 0xee, 0x69,
+ 0x20, 0x19, 0x30, 0x6a,
+ 0x02, 0x4d, 0xf6, 0x69,
0x40, 0x33, 0x67, 0x02,
- 0x00, 0xe2, 0xee, 0x41,
- 0x80, 0x33, 0xa7, 0x6a,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x80, 0x33, 0xaf, 0x6a,
0x01, 0x44, 0x10, 0x33,
0x08, 0xa8, 0x51, 0x03,
- 0x00, 0xe2, 0xee, 0x41,
+ 0x00, 0xe2, 0xf6, 0x41,
0x10, 0xea, 0x80, 0x00,
0x01, 0x31, 0xc5, 0x31,
- 0x80, 0xe2, 0x56, 0x62,
- 0x10, 0xa8, 0x7b, 0x6a,
+ 0x80, 0xe2, 0x5e, 0x62,
+ 0x10, 0xa8, 0x83, 0x6a,
0xc0, 0xaa, 0xc5, 0x01,
- 0x40, 0xa8, 0x47, 0x6a,
+ 0x40, 0xa8, 0x4f, 0x6a,
0xbf, 0xe2, 0xc4, 0x09,
- 0x20, 0xa8, 0x5b, 0x7a,
+ 0x20, 0xa8, 0x63, 0x7a,
0x01, 0xe2, 0x88, 0x30,
- 0x00, 0xe2, 0xa2, 0x5b,
- 0xa0, 0x36, 0x63, 0x62,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0xa0, 0x36, 0x6b, 0x62,
0x23, 0xa8, 0x89, 0x08,
- 0x00, 0xe2, 0xa2, 0x5b,
- 0xa0, 0x36, 0x63, 0x62,
- 0x00, 0xa8, 0x5a, 0x42,
- 0xff, 0xe2, 0x5a, 0x62,
- 0x00, 0xe2, 0x7a, 0x42,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0xa0, 0x36, 0x6b, 0x62,
+ 0x00, 0xa8, 0x62, 0x42,
+ 0xff, 0xe2, 0x62, 0x62,
+ 0x00, 0xe2, 0x82, 0x42,
0x40, 0xea, 0x98, 0x00,
0x01, 0xe2, 0x88, 0x30,
- 0x00, 0xe2, 0xa2, 0x5b,
- 0xa0, 0x36, 0x39, 0x72,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0xa0, 0x36, 0x41, 0x72,
0x40, 0xea, 0x98, 0x00,
0x01, 0x31, 0x89, 0x32,
0x08, 0xea, 0x62, 0x02,
- 0x00, 0xe2, 0xee, 0x41,
- 0xe0, 0xea, 0xbe, 0x5b,
- 0x80, 0xe0, 0xb2, 0x6a,
- 0x04, 0xe0, 0x50, 0x73,
- 0x02, 0xe0, 0x80, 0x73,
- 0x00, 0xea, 0x10, 0x73,
- 0x03, 0xe0, 0x90, 0x73,
- 0x23, 0xe0, 0x8c, 0x72,
- 0x08, 0xe0, 0xae, 0x72,
- 0x00, 0xe2, 0xa2, 0x5b,
- 0x07, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0xe0, 0xea, 0xce, 0x5b,
+ 0x80, 0xe0, 0xba, 0x6a,
+ 0x04, 0xe0, 0x60, 0x73,
+ 0x02, 0xe0, 0x90, 0x73,
+ 0x00, 0xea, 0x18, 0x73,
+ 0x03, 0xe0, 0xa0, 0x73,
+ 0x23, 0xe0, 0x94, 0x72,
+ 0x08, 0xe0, 0xb6, 0x72,
+ 0x00, 0xe2, 0xb2, 0x5b,
+ 0x07, 0xea, 0x4e, 0x59,
0x07, 0xea, 0x04, 0x00,
- 0x08, 0x42, 0xef, 0x71,
- 0x04, 0x42, 0x89, 0x62,
+ 0x08, 0x42, 0xf7, 0x71,
+ 0x04, 0x42, 0x91, 0x62,
0x01, 0x43, 0x89, 0x30,
- 0x00, 0xe2, 0x7a, 0x42,
+ 0x00, 0xe2, 0x82, 0x42,
0x01, 0x44, 0xd4, 0x31,
- 0x00, 0xe2, 0x7a, 0x42,
+ 0x00, 0xe2, 0x82, 0x42,
0x01, 0x00, 0x60, 0x32,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
0x4c, 0x34, 0xc1, 0x28,
0x01, 0x64, 0xc0, 0x31,
- 0x00, 0x30, 0x3b, 0x59,
+ 0x00, 0x30, 0x43, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x01, 0xe0, 0xac, 0x7a,
- 0xa0, 0xea, 0xb4, 0x5b,
- 0x01, 0xa0, 0xac, 0x62,
- 0x01, 0x84, 0xa5, 0x7a,
- 0x01, 0xa7, 0xae, 0x7a,
- 0x00, 0xe2, 0xae, 0x42,
- 0x03, 0xea, 0x46, 0x59,
+ 0x01, 0xe0, 0xb4, 0x7a,
+ 0xa0, 0xea, 0xc4, 0x5b,
+ 0x01, 0xa0, 0xb4, 0x62,
+ 0x01, 0x84, 0xad, 0x7a,
+ 0x01, 0xa7, 0xb6, 0x7a,
+ 0x00, 0xe2, 0xb6, 0x42,
+ 0x03, 0xea, 0x4e, 0x59,
0x03, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xae, 0x42,
- 0x07, 0xea, 0xc6, 0x5b,
+ 0x00, 0xe2, 0xb6, 0x42,
+ 0x07, 0xea, 0xd6, 0x5b,
0x01, 0x44, 0xd4, 0x31,
- 0x00, 0xe2, 0xee, 0x41,
+ 0x00, 0xe2, 0xf6, 0x41,
0x3f, 0xe0, 0x6a, 0x0a,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
@@ -361,78 +365,82 @@ static uint8_t seqprog[] = {
0x01, 0xea, 0xc6, 0x01,
0x02, 0xe2, 0xc8, 0x31,
0x02, 0xec, 0x40, 0x31,
- 0xff, 0xa1, 0xce, 0x72,
+ 0xff, 0xa1, 0xd6, 0x72,
0x02, 0xe8, 0xda, 0x31,
0x02, 0xa0, 0x50, 0x31,
- 0x00, 0xe2, 0xf0, 0x42,
+ 0x00, 0xe2, 0xf8, 0x42,
0x80, 0x33, 0x67, 0x02,
0x01, 0x44, 0xd4, 0x31,
- 0x00, 0xe2, 0xa2, 0x5b,
+ 0x00, 0xe2, 0xb2, 0x5b,
0x01, 0x33, 0x67, 0x02,
- 0xe0, 0x36, 0x0b, 0x63,
+ 0xe0, 0x36, 0x13, 0x63,
0x02, 0x33, 0x67, 0x02,
- 0x20, 0x46, 0x04, 0x63,
+ 0x20, 0x46, 0x0c, 0x63,
0xff, 0xea, 0x52, 0x09,
- 0xa8, 0xea, 0xb4, 0x5b,
- 0x04, 0xa8, 0xeb, 0x7a,
+ 0xa8, 0xea, 0xc4, 0x5b,
+ 0x04, 0xa8, 0xf3, 0x7a,
0x01, 0x34, 0xc1, 0x31,
- 0x00, 0xa9, 0xeb, 0x62,
+ 0x00, 0xa9, 0xf3, 0x62,
0x01, 0x35, 0xc1, 0x31,
- 0x00, 0xaa, 0xf5, 0x72,
+ 0x00, 0xaa, 0xfd, 0x72,
0x01, 0xa9, 0x52, 0x11,
- 0xff, 0xa9, 0xe0, 0x6a,
- 0x00, 0xe2, 0x04, 0x43,
+ 0xff, 0xa9, 0xe8, 0x6a,
+ 0x00, 0xe2, 0x0c, 0x43,
0x10, 0x33, 0x67, 0x02,
- 0x04, 0xa8, 0x05, 0x7b,
+ 0x04, 0xa8, 0x0d, 0x7b,
0xfb, 0xa8, 0x51, 0x0b,
0xff, 0xea, 0x66, 0x0a,
- 0x01, 0xa4, 0xff, 0x6a,
+ 0x01, 0x9c, 0x07, 0x6b,
0x02, 0xa8, 0x90, 0x32,
- 0x00, 0xe2, 0x60, 0x59,
- 0x10, 0xa8, 0xaf, 0x7a,
- 0xff, 0xea, 0xc6, 0x5b,
- 0x00, 0xe2, 0xae, 0x42,
- 0x04, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0x68, 0x59,
+ 0x10, 0xa8, 0xb7, 0x7a,
+ 0xff, 0xea, 0xd6, 0x5b,
+ 0x00, 0xe2, 0xb6, 0x42,
+ 0x04, 0xea, 0x4e, 0x59,
0x04, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xae, 0x42,
- 0x04, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xb6, 0x42,
+ 0x04, 0xea, 0x4e, 0x59,
0x04, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xee, 0x41,
- 0x08, 0xa8, 0xa7, 0x7a,
- 0xc0, 0x33, 0x1b, 0x7b,
- 0x80, 0x33, 0xa7, 0x6a,
- 0xff, 0x88, 0x1b, 0x6b,
- 0x40, 0x33, 0xa7, 0x6a,
- 0x10, 0xa8, 0x21, 0x7b,
- 0x0a, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x08, 0xa8, 0xaf, 0x7a,
+ 0xc0, 0x33, 0x23, 0x7b,
+ 0x80, 0x33, 0xaf, 0x6a,
+ 0xff, 0x88, 0x23, 0x6b,
+ 0x40, 0x33, 0xaf, 0x6a,
+ 0x10, 0xa8, 0x29, 0x7b,
+ 0x0a, 0xea, 0x4e, 0x59,
0x0a, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x3a, 0x5b,
- 0x00, 0xe2, 0x6c, 0x43,
- 0x50, 0x4b, 0x28, 0x6b,
+ 0x00, 0xe2, 0x48, 0x5b,
+ 0x00, 0xe2, 0x7c, 0x43,
+ 0x50, 0x4b, 0x30, 0x6b,
0xbf, 0x3a, 0x74, 0x08,
- 0x01, 0xe0, 0xf8, 0x31,
+ 0x01, 0xe0, 0xf4, 0x31,
0xff, 0xea, 0xc0, 0x09,
0x01, 0x2e, 0x5d, 0x1a,
0x00, 0x2f, 0x5f, 0x22,
0x04, 0x47, 0x8f, 0x02,
- 0x01, 0xfc, 0xc0, 0x35,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x01, 0xfa, 0xc0, 0x35,
+ 0x02, 0xa8, 0x84, 0x32,
+ 0x02, 0xea, 0xb4, 0x00,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
0x02, 0x42, 0x51, 0x31,
- 0xff, 0x88, 0x47, 0x6b,
- 0x01, 0xa4, 0x43, 0x6b,
- 0x02, 0xa4, 0x4b, 0x6b,
- 0x01, 0x84, 0x4b, 0x7b,
+ 0xff, 0xae, 0x65, 0x68,
+ 0xff, 0x88, 0x55, 0x6b,
+ 0x01, 0x9c, 0x51, 0x6b,
+ 0x02, 0x9c, 0x59, 0x6b,
+ 0x01, 0x84, 0x59, 0x7b,
0x02, 0x28, 0x19, 0x33,
0x02, 0xa8, 0x50, 0x36,
- 0xff, 0x88, 0x4b, 0x73,
- 0x00, 0xe2, 0x24, 0x5b,
+ 0xff, 0x88, 0x59, 0x73,
+ 0x00, 0xe2, 0x2c, 0x5b,
+ 0x02, 0xa8, 0x5c, 0x33,
0x02, 0x2c, 0x19, 0x33,
0x02, 0xa8, 0x58, 0x32,
- 0x04, 0xa4, 0x49, 0x07,
- 0xc0, 0x33, 0xa7, 0x6a,
+ 0x04, 0x9c, 0x39, 0x07,
+ 0xc0, 0x33, 0xaf, 0x6a,
0x04, 0xa8, 0x51, 0x03,
- 0x20, 0xa8, 0x6d, 0x6b,
+ 0x20, 0xa8, 0x7d, 0x6b,
0x02, 0xa8, 0x40, 0x31,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
@@ -447,73 +455,73 @@ static uint8_t seqprog[] = {
0xf7, 0x57, 0xae, 0x08,
0x08, 0xea, 0x98, 0x00,
0x01, 0x44, 0xd4, 0x31,
- 0xee, 0x00, 0x76, 0x6b,
+ 0xee, 0x00, 0x86, 0x6b,
0x02, 0xea, 0xb4, 0x00,
- 0x00, 0xe2, 0x9e, 0x5b,
- 0x09, 0x4c, 0x78, 0x7b,
+ 0x00, 0xe2, 0xae, 0x5b,
+ 0x09, 0x4c, 0x88, 0x7b,
0x08, 0x4c, 0x06, 0x68,
- 0x0b, 0xea, 0x46, 0x59,
+ 0x0b, 0xea, 0x4e, 0x59,
0x0b, 0xea, 0x04, 0x00,
0x01, 0x44, 0xd4, 0x31,
- 0x20, 0x33, 0xef, 0x79,
- 0x00, 0xe2, 0x88, 0x5b,
- 0x00, 0xe2, 0xee, 0x41,
- 0x01, 0x84, 0x8d, 0x7b,
- 0x01, 0xa4, 0x49, 0x07,
- 0x08, 0x60, 0x30, 0x33,
- 0x08, 0x80, 0x41, 0x37,
+ 0x20, 0x33, 0xf7, 0x79,
+ 0x00, 0xe2, 0x98, 0x5b,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x01, 0x84, 0x9d, 0x7b,
+ 0x01, 0x9c, 0x39, 0x07,
+ 0x08, 0x60, 0x20, 0x33,
+ 0x08, 0x80, 0x31, 0x37,
0xdf, 0x33, 0x67, 0x0a,
- 0xee, 0x00, 0x9a, 0x6b,
+ 0xee, 0x00, 0xaa, 0x6b,
0x05, 0xea, 0xb4, 0x00,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
- 0x00, 0xe2, 0x60, 0x59,
- 0x00, 0xe2, 0xae, 0x42,
+ 0x00, 0xe2, 0x68, 0x59,
+ 0x00, 0xe2, 0xb6, 0x42,
0x01, 0xea, 0x6c, 0x02,
0xc0, 0xea, 0x66, 0x06,
- 0xff, 0x42, 0xae, 0x6b,
- 0x01, 0x41, 0xa2, 0x6b,
- 0x02, 0x41, 0xa2, 0x7b,
- 0xff, 0x42, 0xae, 0x6b,
- 0x01, 0x41, 0xa2, 0x6b,
- 0x02, 0x41, 0xa2, 0x7b,
- 0xff, 0x42, 0xae, 0x7b,
- 0x04, 0x4c, 0xa2, 0x6b,
+ 0xff, 0x42, 0xbe, 0x6b,
+ 0x01, 0x41, 0xb2, 0x6b,
+ 0x02, 0x41, 0xb2, 0x7b,
+ 0xff, 0x42, 0xbe, 0x6b,
+ 0x01, 0x41, 0xb2, 0x6b,
+ 0x02, 0x41, 0xb2, 0x7b,
+ 0xff, 0x42, 0xbe, 0x7b,
+ 0x04, 0x4c, 0xb2, 0x6b,
0xe0, 0x41, 0x6c, 0x0e,
0x01, 0x44, 0xd4, 0x31,
- 0xff, 0x42, 0xb6, 0x7b,
- 0x04, 0x4c, 0xb6, 0x6b,
+ 0xff, 0x42, 0xc6, 0x7b,
+ 0x04, 0x4c, 0xc6, 0x6b,
0xe0, 0x41, 0x6c, 0x0a,
- 0xe0, 0x36, 0xef, 0x61,
+ 0xe0, 0x36, 0xf7, 0x61,
0xff, 0xea, 0xca, 0x09,
0x01, 0xe2, 0xc8, 0x31,
0x01, 0x46, 0xda, 0x35,
0x01, 0x44, 0xd4, 0x35,
0x10, 0xea, 0x80, 0x00,
0x01, 0xe2, 0x62, 0x36,
- 0x04, 0xa6, 0xce, 0x7b,
+ 0x04, 0xa6, 0xde, 0x7b,
0xff, 0xea, 0x5a, 0x09,
0xff, 0xea, 0x4c, 0x0d,
- 0x01, 0xa6, 0xec, 0x6b,
- 0x10, 0xad, 0x8c, 0x7d,
- 0x80, 0xad, 0xe4, 0x6b,
- 0x08, 0xad, 0x8c, 0x6d,
+ 0x01, 0xa6, 0xfc, 0x6b,
+ 0x10, 0xad, 0x64, 0x78,
+ 0x80, 0xad, 0xf4, 0x6b,
+ 0x08, 0xad, 0x64, 0x68,
0x04, 0x84, 0xf9, 0x30,
0x00, 0xea, 0x08, 0x81,
0xff, 0xea, 0xd4, 0x09,
0x02, 0x84, 0xf9, 0x88,
0x0d, 0xea, 0x5a, 0x01,
0x04, 0xa6, 0x4c, 0x05,
- 0x04, 0xa6, 0x8c, 0x7d,
+ 0x04, 0xa6, 0x64, 0x78,
0xff, 0xea, 0x5a, 0x09,
0x03, 0x84, 0x59, 0x89,
0x03, 0xea, 0x4c, 0x01,
- 0x80, 0x1a, 0x8c, 0x7d,
- 0x08, 0x19, 0x8c, 0x7d,
+ 0x80, 0x1a, 0x64, 0x78,
+ 0x08, 0x19, 0x64, 0x78,
0x08, 0xb0, 0xe0, 0x30,
0x04, 0xb0, 0xe0, 0x30,
0x03, 0xb0, 0xf0, 0x30,
- 0x01, 0x78, 0xfa, 0x7b,
+ 0x01, 0x78, 0x0a, 0x7c,
0x01, 0xa7, 0x4e, 0x11,
0x01, 0xb0, 0x06, 0x33,
0x7f, 0x83, 0xe9, 0x08,
@@ -524,275 +532,268 @@ static uint8_t seqprog[] = {
0x00, 0x86, 0x0d, 0x23,
0x00, 0x87, 0x0f, 0x23,
0x01, 0x84, 0xc5, 0x31,
- 0x01, 0xa7, 0x10, 0x7c,
+ 0x01, 0xa7, 0x20, 0x7c,
0x04, 0xe2, 0xc4, 0x01,
- 0x80, 0x83, 0x17, 0x7c,
+ 0x80, 0x83, 0x27, 0x7c,
0x02, 0xe2, 0xc4, 0x01,
0xff, 0xea, 0x4c, 0x09,
0x01, 0xe2, 0x36, 0x30,
0xc8, 0x19, 0x32, 0x00,
0x88, 0x19, 0x32, 0x00,
0x01, 0xac, 0xd4, 0x99,
- 0x00, 0xe2, 0x8c, 0x55,
+ 0x00, 0xe2, 0x64, 0x50,
0xfe, 0xa6, 0x4c, 0x0d,
- 0x0b, 0x98, 0xe1, 0x30,
- 0x01, 0xa0, 0x4f, 0x09,
- 0xfd, 0xa4, 0x49, 0x09,
- 0x80, 0xa3, 0x2d, 0x7c,
+ 0x0b, 0x90, 0xe1, 0x30,
+ 0x01, 0x98, 0x4f, 0x09,
+ 0xfd, 0x9c, 0x49, 0x09,
+ 0x80, 0x9b, 0x3d, 0x7c,
0x02, 0xa4, 0x48, 0x01,
- 0x01, 0xa7, 0x30, 0x7c,
+ 0x01, 0xa7, 0x40, 0x7c,
0x04, 0xa4, 0x48, 0x01,
0x01, 0xa4, 0x36, 0x30,
0xa8, 0xea, 0x32, 0x00,
- 0xfd, 0xa4, 0x49, 0x0b,
- 0x05, 0xa3, 0x07, 0x33,
- 0x80, 0x83, 0x3d, 0x6c,
+ 0xfd, 0x9c, 0x39, 0x0b,
+ 0x05, 0x9b, 0x07, 0x33,
+ 0x80, 0x83, 0x4d, 0x6c,
0x02, 0xea, 0x4c, 0x05,
0xff, 0xea, 0x4c, 0x0d,
- 0x00, 0xe2, 0x32, 0x59,
- 0x02, 0xa6, 0xd0, 0x6b,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x02, 0xa6, 0xe0, 0x6b,
0x80, 0xf9, 0xf2, 0x05,
- 0xc0, 0x33, 0x4b, 0x7c,
- 0x03, 0xea, 0x46, 0x59,
+ 0xc0, 0x33, 0x5b, 0x7c,
+ 0x03, 0xea, 0x4e, 0x59,
0x03, 0xea, 0x04, 0x00,
- 0x20, 0x33, 0x6f, 0x7c,
- 0x01, 0x84, 0x55, 0x6c,
- 0x06, 0xea, 0x46, 0x59,
+ 0x20, 0x33, 0x7f, 0x7c,
+ 0x01, 0x84, 0x65, 0x6c,
+ 0x06, 0xea, 0x4e, 0x59,
0x06, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x72, 0x44,
+ 0x00, 0xe2, 0x82, 0x44,
0x01, 0x00, 0x60, 0x32,
- 0xee, 0x00, 0x5e, 0x6c,
+ 0xee, 0x00, 0x6e, 0x6c,
0x05, 0xea, 0xb4, 0x00,
- 0x33, 0xea, 0x3a, 0x59,
+ 0x33, 0xea, 0x42, 0x59,
0x33, 0xea, 0x00, 0x00,
0x80, 0x3d, 0x7a, 0x00,
- 0xfc, 0x42, 0x60, 0x7c,
+ 0xfc, 0x42, 0x70, 0x7c,
0x7f, 0x3d, 0x7a, 0x08,
- 0x00, 0x30, 0x3b, 0x59,
+ 0x00, 0x30, 0x43, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x09, 0xea, 0x46, 0x59,
+ 0x09, 0xea, 0x4e, 0x59,
0x09, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xee, 0x41,
- 0x01, 0xa4, 0x55, 0x6c,
- 0x00, 0xe2, 0x22, 0x5c,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x01, 0x9c, 0x65, 0x6c,
+ 0x00, 0xe2, 0x32, 0x5c,
0x20, 0x33, 0x67, 0x02,
0x01, 0x00, 0x60, 0x32,
- 0x02, 0xa6, 0x7a, 0x7c,
- 0x00, 0xe2, 0x3e, 0x5c,
+ 0x02, 0xa6, 0x8a, 0x7c,
+ 0x00, 0xe2, 0x4e, 0x5c,
+ 0x00, 0xe2, 0x56, 0x58,
0x00, 0xe2, 0x66, 0x58,
- 0x00, 0xe2, 0x76, 0x58,
- 0x00, 0xe2, 0x30, 0x58,
- 0x00, 0x30, 0x3b, 0x59,
+ 0x00, 0xe2, 0x3a, 0x58,
+ 0x00, 0x30, 0x43, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x20, 0x19, 0x7a, 0x6c,
- 0x00, 0xe2, 0xaa, 0x5c,
- 0x04, 0x19, 0x94, 0x6c,
+ 0x20, 0x19, 0x8a, 0x6c,
+ 0x00, 0xe2, 0xba, 0x5c,
+ 0x04, 0x19, 0xa4, 0x6c,
0x02, 0x19, 0x32, 0x00,
- 0x01, 0x84, 0x95, 0x7c,
- 0x01, 0x1b, 0x8e, 0x7c,
- 0x01, 0x1a, 0x94, 0x6c,
- 0x00, 0xe2, 0x44, 0x44,
- 0x80, 0x4b, 0x9a, 0x6c,
- 0x01, 0x4c, 0x96, 0x7c,
- 0x03, 0x42, 0x44, 0x6c,
- 0x00, 0xe2, 0xca, 0x5b,
+ 0x01, 0x84, 0xa5, 0x7c,
+ 0x01, 0x1b, 0x9e, 0x7c,
+ 0x01, 0x1a, 0xa4, 0x6c,
+ 0x00, 0xe2, 0x54, 0x44,
+ 0x80, 0x4b, 0xaa, 0x6c,
+ 0x01, 0x4c, 0xa6, 0x7c,
+ 0x03, 0x42, 0x54, 0x6c,
+ 0x00, 0xe2, 0xda, 0x5b,
0x80, 0xf9, 0xf2, 0x01,
- 0x04, 0x33, 0xef, 0x79,
- 0x00, 0xe2, 0xee, 0x41,
- 0x08, 0x5d, 0xb2, 0x6c,
- 0x00, 0xe2, 0x66, 0x58,
- 0x00, 0x30, 0x3b, 0x59,
+ 0x04, 0x33, 0xf7, 0x79,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x08, 0x5d, 0xc2, 0x6c,
+ 0x00, 0xe2, 0x56, 0x58,
+ 0x00, 0x30, 0x43, 0x59,
0x01, 0x30, 0x01, 0x30,
- 0x02, 0x1b, 0xa2, 0x7c,
- 0x08, 0x5d, 0xb0, 0x7c,
+ 0x02, 0x1b, 0xb2, 0x7c,
+ 0x08, 0x5d, 0xc0, 0x7c,
0x03, 0x68, 0x00, 0x37,
0x01, 0x84, 0x09, 0x07,
- 0x80, 0x1b, 0xbc, 0x7c,
- 0x80, 0x84, 0xbd, 0x6c,
+ 0x80, 0x1b, 0xcc, 0x7c,
+ 0x80, 0x84, 0xcd, 0x6c,
0xff, 0x85, 0x0b, 0x1b,
0xff, 0x86, 0x0d, 0x23,
0xff, 0x87, 0x0f, 0x23,
0xf8, 0x1b, 0x08, 0x0b,
0xff, 0xea, 0x4e, 0x09,
- 0x04, 0x1b, 0xc4, 0x7c,
+ 0x04, 0x1b, 0xd4, 0x7c,
0x01, 0xa7, 0x4e, 0x01,
0xff, 0xea, 0x06, 0x0b,
0x03, 0x68, 0x00, 0x37,
- 0x00, 0xe2, 0xb6, 0x58,
+ 0x00, 0xe2, 0xc4, 0x58,
0x10, 0xea, 0x18, 0x00,
0xf9, 0xd9, 0xb2, 0x0d,
0x01, 0xd9, 0xb2, 0x05,
0x01, 0x52, 0x48, 0x31,
- 0x20, 0xa4, 0xe8, 0x7c,
- 0x20, 0x5b, 0xe8, 0x7c,
- 0x80, 0xf9, 0xf6, 0x7c,
+ 0x20, 0xa4, 0xfc, 0x7c,
+ 0x20, 0x5b, 0xfc, 0x7c,
+ 0x80, 0xf9, 0x0a, 0x7d,
+ 0x02, 0xea, 0xb4, 0x00,
0x11, 0x00, 0x00, 0x10,
- 0x04, 0x19, 0xe2, 0x7c,
+ 0x04, 0x19, 0x16, 0x7d,
0xdf, 0x19, 0x32, 0x08,
- 0x01, 0x4c, 0xde, 0x7c,
+ 0x60, 0x5b, 0xf4, 0x6c,
+ 0x01, 0x4c, 0xf0, 0x7c,
0x20, 0x19, 0x32, 0x00,
- 0x11, 0x00, 0x00, 0x10,
+ 0x01, 0xd9, 0xb2, 0x05,
0x02, 0xea, 0xb4, 0x00,
0x01, 0xd9, 0xb2, 0x05,
- 0x10, 0x5b, 0xfa, 0x6c,
- 0x08, 0x5b, 0x02, 0x6d,
- 0x20, 0x5b, 0xf4, 0x6c,
- 0x02, 0x5b, 0x22, 0x6d,
- 0x0e, 0xea, 0x46, 0x59,
+ 0x10, 0x5b, 0x0e, 0x6d,
+ 0x08, 0x5b, 0x18, 0x6d,
+ 0x20, 0x5b, 0x08, 0x6d,
+ 0x02, 0x5b, 0x38, 0x6d,
+ 0x0e, 0xea, 0x4e, 0x59,
0x0e, 0xea, 0x04, 0x00,
- 0x80, 0xf9, 0xe4, 0x6c,
+ 0x80, 0xf9, 0xf8, 0x6c,
0xdf, 0x5c, 0xb8, 0x08,
0x01, 0xd9, 0xb2, 0x05,
- 0x01, 0xa4, 0xf5, 0x6d,
- 0x00, 0xe2, 0x22, 0x5c,
- 0x00, 0xe2, 0x2c, 0x5d,
+ 0x01, 0x9c, 0xf3, 0x6d,
+ 0x00, 0xe2, 0x32, 0x5c,
+ 0x00, 0xe2, 0x42, 0x5d,
+ 0x01, 0xae, 0x5d, 0x1b,
0x01, 0xd9, 0xb2, 0x05,
- 0x00, 0xe2, 0x24, 0x5b,
- 0xf3, 0x92, 0xd5, 0x19,
- 0x00, 0xe2, 0x10, 0x55,
- 0x80, 0x92, 0x11, 0x6d,
- 0x0f, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0x2c, 0x5b,
+ 0xf3, 0xac, 0xd5, 0x19,
+ 0x00, 0xe2, 0x26, 0x55,
+ 0x80, 0xac, 0x27, 0x6d,
+ 0x0f, 0xea, 0x4e, 0x59,
0x0f, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x18, 0x45,
+ 0x00, 0xe2, 0x2e, 0x45,
0x04, 0x8c, 0xe1, 0x30,
0x01, 0xea, 0xf2, 0x00,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
- 0xff, 0x93, 0x1f, 0x7d,
- 0x14, 0xea, 0x46, 0x59,
+ 0xff, 0xad, 0x35, 0x7d,
+ 0x14, 0xea, 0x4e, 0x59,
0x14, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xa6, 0x5d,
+ 0x00, 0xe2, 0xa4, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
- 0x00, 0xe2, 0xce, 0x5d,
+ 0x00, 0xe2, 0x9c, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
- 0x02, 0xa8, 0xf4, 0x31,
- 0x02, 0xa6, 0x3e, 0x7d,
- 0x00, 0xe2, 0x34, 0x59,
- 0x20, 0x5b, 0x4c, 0x6d,
- 0xfc, 0x42, 0x38, 0x7d,
- 0x10, 0x40, 0x3a, 0x6d,
- 0x20, 0x4d, 0x3c, 0x7d,
- 0x08, 0x5d, 0x4c, 0x6d,
- 0x02, 0xa6, 0xd0, 0x6b,
- 0x00, 0xe2, 0x34, 0x59,
- 0x20, 0x5b, 0x4c, 0x6d,
- 0x01, 0x1b, 0x6c, 0x6d,
- 0xfc, 0x42, 0x48, 0x7d,
- 0x10, 0x40, 0x4a, 0x6d,
- 0x20, 0x4d, 0x8c, 0x7d,
- 0x08, 0x5d, 0x8c, 0x7d,
+ 0x02, 0xa6, 0x52, 0x7d,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x20, 0x5b, 0x60, 0x6d,
+ 0xfc, 0x42, 0x4c, 0x7d,
+ 0x10, 0x40, 0x4e, 0x6d,
+ 0x20, 0x4d, 0x50, 0x7d,
+ 0x08, 0x5d, 0x60, 0x6d,
+ 0x02, 0xa6, 0xe0, 0x6b,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x20, 0x5b, 0x60, 0x6d,
+ 0x01, 0x1b, 0x80, 0x6d,
+ 0xfc, 0x42, 0x5c, 0x7d,
+ 0x10, 0x40, 0x5e, 0x6d,
+ 0x20, 0x4d, 0x64, 0x78,
+ 0x08, 0x5d, 0x64, 0x78,
0x02, 0x19, 0x32, 0x00,
0x01, 0x5b, 0x40, 0x31,
- 0x00, 0xe2, 0xaa, 0x5c,
- 0x00, 0xe2, 0x88, 0x5b,
+ 0x00, 0xe2, 0xba, 0x5c,
+ 0x00, 0xe2, 0x98, 0x5b,
0x20, 0xea, 0xb6, 0x00,
- 0x00, 0xe2, 0xca, 0x5b,
+ 0x00, 0xe2, 0xda, 0x5b,
0x20, 0x5c, 0xb8, 0x00,
- 0x04, 0x19, 0x62, 0x6d,
- 0x01, 0x1a, 0x62, 0x6d,
- 0x00, 0xe2, 0x34, 0x59,
- 0x01, 0x1a, 0x8c, 0x7d,
+ 0x04, 0x19, 0x76, 0x6d,
+ 0x01, 0x1a, 0x76, 0x6d,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
- 0x20, 0xa0, 0xde, 0x7d,
- 0x08, 0xa8, 0x6b, 0x7d,
- 0x00, 0xe2, 0x7e, 0x45,
+ 0x20, 0xa0, 0xda, 0x7d,
+ 0xff, 0xae, 0x5d, 0x1b,
+ 0x08, 0xa8, 0x3d, 0x6b,
0x02, 0xea, 0xb4, 0x04,
- 0x02, 0x19, 0x32, 0x00,
- 0x08, 0xa8, 0x8f, 0x7d,
- 0x04, 0x5d, 0xf4, 0x7d,
- 0x01, 0x1a, 0xf4, 0x7d,
- 0x01, 0xa4, 0x49, 0x03,
- 0x80, 0xf9, 0xf2, 0x01,
- 0x02, 0xa8, 0x84, 0x32,
- 0x02, 0xea, 0xb4, 0x00,
- 0x00, 0xe2, 0x34, 0x43,
- 0x02, 0xa8, 0x84, 0x32,
- 0x02, 0xea, 0xb4, 0x00,
- 0xff, 0xea, 0xd4, 0x19,
- 0x00, 0xe2, 0x40, 0x59,
- 0x11, 0x00, 0x00, 0x10,
- 0x00, 0xe2, 0xc2, 0x5d,
- 0x00, 0xe2, 0x34, 0x53,
- 0xff, 0xea, 0xd4, 0x0d,
- 0x00, 0xe2, 0x34, 0x59,
- 0x40, 0x5b, 0x9a, 0x6d,
+ 0x01, 0x9c, 0x39, 0x03,
+ 0x40, 0x5b, 0x90, 0x6d,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x40, 0x5b, 0x90, 0x6d,
0x04, 0x5d, 0xf4, 0x7d,
0x01, 0x1a, 0xf4, 0x7d,
- 0x20, 0x4d, 0x8c, 0x7d,
- 0x40, 0x5b, 0xde, 0x7d,
+ 0x20, 0x4d, 0x64, 0x78,
+ 0x40, 0x5b, 0xda, 0x7d,
0x04, 0x5d, 0xf4, 0x7d,
0x01, 0x1a, 0xf4, 0x7d,
0x80, 0xf9, 0xf2, 0x01,
- 0x01, 0xa4, 0x49, 0x03,
- 0x08, 0xa8, 0x7f, 0x6d,
+ 0xff, 0xae, 0x5d, 0x1b,
+ 0x08, 0xa8, 0x3d, 0x6b,
0x02, 0xea, 0xb4, 0x04,
- 0x00, 0xe2, 0x32, 0x59,
- 0x01, 0x1b, 0xb6, 0x7d,
- 0x40, 0x5b, 0x8c, 0x7d,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x01, 0x1b, 0x64, 0x78,
+ 0x80, 0xf9, 0xf2, 0x01,
+ 0x02, 0xea, 0xb4, 0x04,
+ 0x00, 0xe2, 0x3c, 0x59,
+ 0x01, 0x1b, 0xb8, 0x6d,
+ 0x40, 0x5b, 0xc6, 0x7d,
+ 0x01, 0x1b, 0xb8, 0x6d,
0x02, 0x19, 0x32, 0x00,
+ 0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xea, 0x10, 0x03,
0x08, 0xa8, 0x51, 0x03,
- 0x00, 0xe2, 0x7e, 0x45,
- 0xff, 0x6a, 0xbc, 0x6d,
- 0x40, 0x5b, 0x8c, 0x7d,
- 0xff, 0x6a, 0xac, 0x7d,
- 0x10, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0x3c, 0x43,
+ 0x01, 0x1a, 0xc2, 0x7d,
+ 0x40, 0x5b, 0xbe, 0x7d,
+ 0x01, 0x1a, 0xac, 0x6d,
+ 0xfc, 0x42, 0x64, 0x78,
+ 0x01, 0x1a, 0xc6, 0x6d,
+ 0x10, 0xea, 0x4e, 0x59,
0x10, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xac, 0x45,
- 0x80, 0xf9, 0x8c, 0x6d,
- 0x01, 0x43, 0xc1, 0x31,
- 0x00, 0xfb, 0x8c, 0x65,
- 0x01, 0x42, 0xc1, 0x31,
- 0x00, 0xfa, 0x8c, 0x65,
- 0x01, 0xe8, 0xd4, 0x1d,
- 0x00, 0xe2, 0x32, 0x59,
- 0x01, 0x1b, 0x8c, 0x7d,
- 0x80, 0xf9, 0xf2, 0x01,
- 0x02, 0xea, 0xb4, 0x04,
+ 0xfc, 0x42, 0x64, 0x78,
+ 0x10, 0x40, 0xcc, 0x6d,
+ 0x20, 0x4d, 0x64, 0x78,
+ 0x40, 0x5b, 0xac, 0x6d,
+ 0x01, 0x1a, 0x64, 0x78,
+ 0x01, 0xae, 0x5d, 0x1b,
0x30, 0x3f, 0xc0, 0x09,
- 0x30, 0xe0, 0x8c, 0x65,
- 0x40, 0x4b, 0x8c, 0x6d,
+ 0x30, 0xe0, 0x64, 0x60,
+ 0x40, 0x4b, 0x64, 0x68,
0xff, 0xea, 0x52, 0x01,
- 0xee, 0x00, 0xe4, 0x6d,
+ 0xee, 0x00, 0xe0, 0x6d,
0x80, 0xf9, 0xf2, 0x01,
+ 0xff, 0xae, 0x5d, 0x1b,
0x02, 0xea, 0xb4, 0x00,
0x20, 0xea, 0x9a, 0x00,
- 0xf3, 0x42, 0xee, 0x6d,
- 0x12, 0xea, 0x46, 0x59,
+ 0xf3, 0x42, 0xec, 0x6d,
+ 0x12, 0xea, 0x4e, 0x59,
0x12, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xee, 0x41,
- 0x0d, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x0d, 0xea, 0x4e, 0x59,
0x0d, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0xee, 0x41,
- 0x11, 0xea, 0x46, 0x59,
+ 0x00, 0xe2, 0xf6, 0x41,
+ 0x01, 0xae, 0x5d, 0x1b,
+ 0x11, 0xea, 0x4e, 0x59,
0x11, 0xea, 0x04, 0x00,
- 0x00, 0xe2, 0x24, 0x5b,
+ 0x00, 0xe2, 0x2c, 0x5b,
0x08, 0x5a, 0xb4, 0x00,
- 0x00, 0xe2, 0x18, 0x5e,
+ 0x00, 0xe2, 0x1a, 0x5e,
0xa8, 0xea, 0x32, 0x00,
- 0x00, 0xe2, 0x34, 0x59,
+ 0x00, 0xe2, 0x3c, 0x59,
0x80, 0x1a, 0x08, 0x7e,
- 0x00, 0xe2, 0x18, 0x5e,
+ 0x00, 0xe2, 0x1a, 0x5e,
0x80, 0x19, 0x32, 0x00,
0x40, 0x5b, 0x0e, 0x6e,
0x08, 0x5a, 0x0e, 0x7e,
- 0x20, 0x4d, 0x8c, 0x7d,
+ 0x20, 0x4d, 0x64, 0x78,
0x02, 0x84, 0x09, 0x03,
- 0x40, 0x5b, 0xde, 0x7d,
- 0x08, 0xa8, 0x77, 0x6d,
+ 0x40, 0x5b, 0xda, 0x7d,
+ 0xff, 0xae, 0x5d, 0x1b,
0x80, 0xf9, 0xf2, 0x01,
+ 0x08, 0xa8, 0x3d, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x01, 0x38, 0xe1, 0x30,
0x05, 0x39, 0xe3, 0x98,
- 0x01, 0xe0, 0xf8, 0x31,
+ 0x01, 0xe0, 0xf4, 0x31,
0xff, 0xea, 0xc0, 0x09,
0x00, 0x3a, 0xe5, 0x20,
0x00, 0x3b, 0xe7, 0x20,
- 0x01, 0xfc, 0xc0, 0x31,
+ 0x01, 0xfa, 0xc0, 0x31,
0x04, 0xea, 0xe8, 0x30,
0xff, 0xea, 0xf0, 0x08,
0x02, 0xea, 0xf2, 0x00,
@@ -800,12 +801,20 @@ static uint8_t seqprog[] = {
};
typedef int ahd_patch_func_t (struct ahd_softc *ahd);
+static ahd_patch_func_t ahd_patch21_func;
+
+static int
+ahd_patch21_func(struct ahd_softc *ahd)
+{
+ return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0);
+}
+
static ahd_patch_func_t ahd_patch20_func;
static int
ahd_patch20_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0);
+ return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0);
}
static ahd_patch_func_t ahd_patch19_func;
@@ -813,7 +822,7 @@ static ahd_patch_func_t ahd_patch19_func;
static int
ahd_patch19_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0);
+ return ((ahd->features & AHD_RTI) == 0);
}
static ahd_patch_func_t ahd_patch18_func;
@@ -821,7 +830,7 @@ static ahd_patch_func_t ahd_patch18_func;
static int
ahd_patch18_func(struct ahd_softc *ahd)
{
- return ((ahd->features & AHD_RTI) == 0);
+ return ((ahd->flags & AHD_INITIATORROLE) != 0);
}
static ahd_patch_func_t ahd_patch17_func;
@@ -829,7 +838,7 @@ static ahd_patch_func_t ahd_patch17_func;
static int
ahd_patch17_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_INITIATORROLE) != 0);
+ return ((ahd->flags & AHD_TARGETROLE) != 0);
}
static ahd_patch_func_t ahd_patch16_func;
@@ -837,7 +846,7 @@ static ahd_patch_func_t ahd_patch16_func;
static int
ahd_patch16_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_TARGETROLE) != 0);
+ return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0);
}
static ahd_patch_func_t ahd_patch15_func;
@@ -845,7 +854,7 @@ static ahd_patch_func_t ahd_patch15_func;
static int
ahd_patch15_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0);
+ return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0);
}
static ahd_patch_func_t ahd_patch14_func;
@@ -853,7 +862,7 @@ static ahd_patch_func_t ahd_patch14_func;
static int
ahd_patch14_func(struct ahd_softc *ahd)
{
- return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0);
+ return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0);
}
static ahd_patch_func_t ahd_patch13_func;
@@ -861,7 +870,7 @@ static ahd_patch_func_t ahd_patch13_func;
static int
ahd_patch13_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0);
+ return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0);
}
static ahd_patch_func_t ahd_patch12_func;
@@ -869,7 +878,7 @@ static ahd_patch_func_t ahd_patch12_func;
static int
ahd_patch12_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0);
+ return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0);
}
static ahd_patch_func_t ahd_patch11_func;
@@ -877,7 +886,7 @@ static ahd_patch_func_t ahd_patch11_func;
static int
ahd_patch11_func(struct ahd_softc *ahd)
{
- return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0);
+ return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0);
}
static ahd_patch_func_t ahd_patch10_func;
@@ -885,7 +894,7 @@ static ahd_patch_func_t ahd_patch10_func;
static int
ahd_patch10_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0);
+ return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0);
}
static ahd_patch_func_t ahd_patch9_func;
@@ -893,7 +902,7 @@ static ahd_patch_func_t ahd_patch9_func;
static int
ahd_patch9_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0);
+ return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0);
}
static ahd_patch_func_t ahd_patch8_func;
@@ -901,7 +910,7 @@ static ahd_patch_func_t ahd_patch8_func;
static int
ahd_patch8_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0);
+ return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0);
}
static ahd_patch_func_t ahd_patch7_func;
@@ -909,7 +918,7 @@ static ahd_patch_func_t ahd_patch7_func;
static int
ahd_patch7_func(struct ahd_softc *ahd)
{
- return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0);
+ return ((ahd->bugs & AHD_LQO_ATNO_BUG) != 0);
}
static ahd_patch_func_t ahd_patch6_func;
@@ -917,7 +926,7 @@ static ahd_patch_func_t ahd_patch6_func;
static int
ahd_patch6_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_LQO_ATNO_BUG) != 0);
+ return ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0);
}
static ahd_patch_func_t ahd_patch5_func;
@@ -925,7 +934,7 @@ static ahd_patch_func_t ahd_patch5_func;
static int
ahd_patch5_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0);
+ return ((ahd->bugs & AHD_NONPACKFIFO_BUG) != 0);
}
static ahd_patch_func_t ahd_patch4_func;
@@ -933,7 +942,7 @@ static ahd_patch_func_t ahd_patch4_func;
static int
ahd_patch4_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_NONPACKFIFO_BUG) != 0);
+ return ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0);
}
static ahd_patch_func_t ahd_patch3_func;
@@ -941,7 +950,7 @@ static ahd_patch_func_t ahd_patch3_func;
static int
ahd_patch3_func(struct ahd_softc *ahd)
{
- return ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0);
+ return ((ahd->bugs & AHD_FAINT_LED_BUG) != 0);
}
static ahd_patch_func_t ahd_patch2_func;
@@ -982,128 +991,126 @@ static struct patch {
{ ahd_patch0_func, 5, 1, 1 },
{ ahd_patch2_func, 6, 1, 2 },
{ ahd_patch0_func, 7, 1, 1 },
- { ahd_patch2_func, 24, 1, 2 },
- { ahd_patch0_func, 25, 1, 1 },
- { ahd_patch1_func, 32, 1, 2 },
- { ahd_patch0_func, 33, 1, 1 },
- { ahd_patch2_func, 40, 1, 2 },
- { ahd_patch0_func, 41, 1, 1 },
- { ahd_patch2_func, 44, 1, 2 },
- { ahd_patch0_func, 45, 1, 1 },
- { ahd_patch2_func, 48, 1, 2 },
- { ahd_patch0_func, 49, 1, 1 },
+ { ahd_patch3_func, 20, 5, 1 },
+ { ahd_patch2_func, 29, 1, 2 },
+ { ahd_patch0_func, 30, 1, 1 },
+ { ahd_patch1_func, 37, 1, 2 },
+ { ahd_patch0_func, 38, 1, 1 },
+ { ahd_patch2_func, 43, 1, 2 },
+ { ahd_patch0_func, 44, 1, 1 },
+ { ahd_patch2_func, 47, 1, 2 },
+ { ahd_patch0_func, 48, 1, 1 },
{ ahd_patch2_func, 51, 1, 2 },
{ ahd_patch0_func, 52, 1, 1 },
- { ahd_patch2_func, 55, 1, 2 },
- { ahd_patch0_func, 56, 1, 1 },
- { ahd_patch2_func, 59, 1, 2 },
- { ahd_patch0_func, 60, 1, 1 },
- { ahd_patch2_func, 157, 6, 1 },
- { ahd_patch1_func, 163, 2, 1 },
- { ahd_patch3_func, 165, 1, 1 },
- { ahd_patch2_func, 174, 1, 2 },
- { ahd_patch0_func, 175, 1, 1 },
- { ahd_patch4_func, 176, 2, 2 },
- { ahd_patch0_func, 178, 6, 3 },
- { ahd_patch2_func, 181, 1, 2 },
- { ahd_patch0_func, 182, 1, 1 },
+ { ahd_patch2_func, 65, 1, 2 },
+ { ahd_patch0_func, 66, 1, 1 },
+ { ahd_patch2_func, 69, 1, 2 },
+ { ahd_patch0_func, 70, 1, 1 },
+ { ahd_patch1_func, 73, 1, 2 },
+ { ahd_patch0_func, 74, 1, 1 },
+ { ahd_patch2_func, 161, 6, 1 },
+ { ahd_patch1_func, 167, 2, 1 },
+ { ahd_patch4_func, 169, 1, 1 },
+ { ahd_patch2_func, 178, 1, 2 },
+ { ahd_patch0_func, 179, 1, 1 },
+ { ahd_patch5_func, 180, 2, 2 },
+ { ahd_patch0_func, 182, 6, 3 },
{ ahd_patch2_func, 185, 1, 2 },
{ ahd_patch0_func, 186, 1, 1 },
- { ahd_patch5_func, 188, 2, 1 },
- { ahd_patch3_func, 196, 16, 2 },
- { ahd_patch0_func, 212, 1, 1 },
- { ahd_patch6_func, 232, 2, 1 },
- { ahd_patch1_func, 236, 1, 2 },
- { ahd_patch0_func, 237, 1, 1 },
- { ahd_patch5_func, 240, 2, 1 },
- { ahd_patch1_func, 254, 1, 2 },
- { ahd_patch0_func, 255, 1, 1 },
+ { ahd_patch2_func, 189, 1, 2 },
+ { ahd_patch0_func, 190, 1, 1 },
+ { ahd_patch6_func, 192, 2, 1 },
+ { ahd_patch4_func, 200, 16, 2 },
+ { ahd_patch0_func, 216, 1, 1 },
+ { ahd_patch7_func, 236, 2, 1 },
+ { ahd_patch1_func, 240, 1, 2 },
+ { ahd_patch0_func, 241, 1, 1 },
+ { ahd_patch6_func, 244, 2, 1 },
{ ahd_patch1_func, 258, 1, 2 },
{ ahd_patch0_func, 259, 1, 1 },
- { ahd_patch2_func, 262, 1, 2 },
+ { ahd_patch1_func, 262, 1, 2 },
{ ahd_patch0_func, 263, 1, 1 },
- { ahd_patch1_func, 318, 1, 2 },
- { ahd_patch0_func, 319, 1, 1 },
- { ahd_patch2_func, 327, 1, 2 },
- { ahd_patch0_func, 328, 1, 1 },
+ { ahd_patch2_func, 266, 1, 2 },
+ { ahd_patch0_func, 267, 1, 1 },
+ { ahd_patch1_func, 322, 1, 2 },
+ { ahd_patch0_func, 323, 1, 1 },
{ ahd_patch2_func, 331, 1, 2 },
{ ahd_patch0_func, 332, 1, 1 },
- { ahd_patch1_func, 339, 1, 2 },
- { ahd_patch0_func, 340, 1, 1 },
- { ahd_patch7_func, 359, 1, 1 },
- { ahd_patch7_func, 362, 1, 1 },
- { ahd_patch7_func, 364, 1, 1 },
- { ahd_patch7_func, 376, 1, 1 },
- { ahd_patch1_func, 386, 1, 2 },
- { ahd_patch0_func, 387, 1, 1 },
- { ahd_patch1_func, 389, 1, 2 },
- { ahd_patch0_func, 390, 1, 1 },
- { ahd_patch1_func, 398, 1, 2 },
- { ahd_patch0_func, 399, 1, 1 },
- { ahd_patch2_func, 410, 1, 2 },
- { ahd_patch0_func, 411, 1, 1 },
- { ahd_patch8_func, 439, 1, 1 },
- { ahd_patch1_func, 446, 1, 2 },
- { ahd_patch0_func, 447, 1, 1 },
- { ahd_patch2_func, 459, 1, 2 },
- { ahd_patch0_func, 460, 1, 1 },
- { ahd_patch9_func, 465, 6, 2 },
- { ahd_patch0_func, 471, 1, 1 },
- { ahd_patch10_func, 494, 1, 1 },
- { ahd_patch11_func, 503, 1, 1 },
- { ahd_patch12_func, 504, 1, 2 },
- { ahd_patch0_func, 505, 1, 1 },
- { ahd_patch13_func, 510, 1, 1 },
+ { ahd_patch2_func, 335, 1, 2 },
+ { ahd_patch0_func, 336, 1, 1 },
+ { ahd_patch1_func, 343, 1, 2 },
+ { ahd_patch0_func, 344, 1, 1 },
+ { ahd_patch8_func, 363, 1, 1 },
+ { ahd_patch8_func, 366, 1, 1 },
+ { ahd_patch8_func, 368, 1, 1 },
+ { ahd_patch8_func, 380, 1, 1 },
+ { ahd_patch1_func, 390, 1, 2 },
+ { ahd_patch0_func, 391, 1, 1 },
+ { ahd_patch1_func, 393, 1, 2 },
+ { ahd_patch0_func, 394, 1, 1 },
+ { ahd_patch1_func, 402, 1, 2 },
+ { ahd_patch0_func, 403, 1, 1 },
+ { ahd_patch2_func, 416, 1, 2 },
+ { ahd_patch0_func, 417, 1, 1 },
+ { ahd_patch9_func, 447, 1, 1 },
+ { ahd_patch1_func, 454, 1, 2 },
+ { ahd_patch0_func, 455, 1, 1 },
+ { ahd_patch2_func, 467, 1, 2 },
+ { ahd_patch0_func, 468, 1, 1 },
+ { ahd_patch10_func, 473, 6, 2 },
+ { ahd_patch0_func, 479, 1, 1 },
+ { ahd_patch11_func, 502, 1, 1 },
{ ahd_patch12_func, 511, 1, 1 },
- { ahd_patch14_func, 524, 1, 2 },
- { ahd_patch0_func, 525, 1, 1 },
- { ahd_patch1_func, 547, 1, 2 },
- { ahd_patch0_func, 548, 1, 1 },
- { ahd_patch1_func, 551, 1, 2 },
- { ahd_patch0_func, 552, 1, 1 },
- { ahd_patch2_func, 557, 1, 2 },
- { ahd_patch0_func, 558, 1, 1 },
- { ahd_patch2_func, 562, 1, 2 },
- { ahd_patch0_func, 563, 1, 1 },
- { ahd_patch1_func, 564, 1, 2 },
- { ahd_patch0_func, 565, 1, 1 },
- { ahd_patch2_func, 576, 1, 2 },
- { ahd_patch0_func, 577, 1, 1 },
- { ahd_patch15_func, 581, 1, 1 },
- { ahd_patch16_func, 586, 1, 1 },
- { ahd_patch17_func, 587, 2, 1 },
- { ahd_patch16_func, 591, 1, 2 },
- { ahd_patch0_func, 592, 1, 1 },
- { ahd_patch2_func, 595, 1, 2 },
- { ahd_patch0_func, 596, 1, 1 },
- { ahd_patch2_func, 614, 1, 2 },
- { ahd_patch0_func, 615, 1, 1 },
- { ahd_patch18_func, 616, 12, 1 },
- { ahd_patch1_func, 632, 1, 2 },
- { ahd_patch0_func, 633, 1, 1 },
- { ahd_patch18_func, 634, 1, 1 },
- { ahd_patch1_func, 645, 1, 2 },
- { ahd_patch0_func, 646, 1, 1 },
- { ahd_patch1_func, 653, 1, 2 },
- { ahd_patch0_func, 654, 1, 1 },
- { ahd_patch15_func, 678, 1, 1 },
- { ahd_patch15_func, 694, 1, 1 },
- { ahd_patch2_func, 706, 1, 2 },
- { ahd_patch0_func, 707, 1, 1 },
- { ahd_patch15_func, 726, 1, 1 },
- { ahd_patch1_func, 734, 1, 2 },
- { ahd_patch0_func, 735, 1, 1 },
- { ahd_patch1_func, 756, 1, 2 },
- { ahd_patch0_func, 757, 1, 1 },
- { ahd_patch1_func, 759, 1, 2 },
- { ahd_patch0_func, 760, 1, 1 },
+ { ahd_patch13_func, 512, 1, 2 },
+ { ahd_patch0_func, 513, 1, 1 },
+ { ahd_patch14_func, 518, 1, 1 },
+ { ahd_patch13_func, 519, 1, 1 },
+ { ahd_patch15_func, 532, 1, 2 },
+ { ahd_patch0_func, 533, 1, 1 },
+ { ahd_patch1_func, 555, 1, 2 },
+ { ahd_patch0_func, 556, 1, 1 },
+ { ahd_patch1_func, 559, 1, 2 },
+ { ahd_patch0_func, 560, 1, 1 },
+ { ahd_patch2_func, 565, 1, 2 },
+ { ahd_patch0_func, 566, 1, 1 },
+ { ahd_patch2_func, 570, 1, 2 },
+ { ahd_patch0_func, 571, 1, 1 },
+ { ahd_patch1_func, 572, 1, 2 },
+ { ahd_patch0_func, 573, 1, 1 },
+ { ahd_patch2_func, 584, 1, 2 },
+ { ahd_patch0_func, 585, 1, 1 },
+ { ahd_patch16_func, 589, 1, 1 },
+ { ahd_patch17_func, 594, 1, 1 },
+ { ahd_patch18_func, 595, 2, 1 },
+ { ahd_patch17_func, 599, 1, 2 },
+ { ahd_patch0_func, 600, 1, 1 },
+ { ahd_patch2_func, 603, 1, 2 },
+ { ahd_patch0_func, 604, 1, 1 },
+ { ahd_patch2_func, 622, 1, 2 },
+ { ahd_patch0_func, 623, 1, 1 },
+ { ahd_patch19_func, 624, 14, 1 },
+ { ahd_patch1_func, 642, 1, 2 },
+ { ahd_patch0_func, 643, 1, 1 },
+ { ahd_patch19_func, 644, 1, 1 },
+ { ahd_patch1_func, 656, 1, 2 },
+ { ahd_patch0_func, 657, 1, 1 },
+ { ahd_patch1_func, 664, 1, 2 },
+ { ahd_patch0_func, 665, 1, 1 },
+ { ahd_patch16_func, 688, 1, 1 },
+ { ahd_patch16_func, 726, 1, 1 },
+ { ahd_patch1_func, 737, 1, 2 },
+ { ahd_patch0_func, 738, 1, 1 },
+ { ahd_patch1_func, 755, 1, 2 },
+ { ahd_patch0_func, 756, 1, 1 },
+ { ahd_patch1_func, 758, 1, 2 },
+ { ahd_patch0_func, 759, 1, 1 },
{ ahd_patch1_func, 762, 1, 2 },
{ ahd_patch0_func, 763, 1, 1 },
- { ahd_patch19_func, 765, 1, 2 },
+ { ahd_patch20_func, 765, 1, 2 },
{ ahd_patch0_func, 766, 2, 1 },
- { ahd_patch20_func, 769, 4, 2 },
+ { ahd_patch21_func, 769, 4, 2 },
{ ahd_patch0_func, 773, 1, 1 },
- { ahd_patch20_func, 780, 11, 1 }
+ { ahd_patch21_func, 781, 11, 1 }
};
static struct cs {
@@ -1112,19 +1119,16 @@ static struct cs {
} critical_sections[] = {
{ 11, 12 },
{ 13, 14 },
- { 24, 37 },
- { 38, 51 },
- { 64, 67 },
- { 94, 119 },
- { 120, 151 },
- { 153, 157 },
- { 165, 173 },
- { 196, 245 },
- { 678, 694 },
- { 694, 712 },
- { 717, 723 },
- { 726, 731 },
- { 737, 743 }
+ { 29, 42 },
+ { 56, 59 },
+ { 101, 127 },
+ { 128, 156 },
+ { 158, 161 },
+ { 169, 177 },
+ { 200, 249 },
+ { 688, 704 },
+ { 704, 718 },
+ { 728, 732 }
};
static const int num_critical_sections = sizeof(critical_sections)