Commit bebe7cd8 authored by Justin T. Gibbs's avatar Justin T. Gibbs

Aic79xx Driver Update

 o Perform a few firmware optimizations
 o Correct the packetized status handler so that
   it can handle CRC errors during status data packets.
parent 03b84f47
......@@ -37,7 +37,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#88 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#89 $
*
* $FreeBSD$
*/
......@@ -494,13 +494,11 @@ struct hardware_scb {
* transfer.
*/
#define SG_PTR_MASK 0xFFFFFFF8
/*16*/ uint16_t tag;
/*18*/ uint8_t cdb_len;
/*19*/ uint8_t task_management;
/*20*/ uint32_t next_hscb_busaddr;
/*24*/ uint64_t dataptr;
/*32*/ uint32_t datacnt; /* Byte 3 is spare. */
/*36*/ uint32_t sgptr;
/*16*/ uint64_t dataptr;
/*24*/ uint32_t datacnt; /* Byte 3 is spare. */
/*28*/ uint32_t sgptr;
/*32*/ uint32_t hscb_busaddr;
/*36*/ uint32_t next_hscb_busaddr;
/*40*/ uint8_t control; /* See SCB_CONTROL in aic79xx.reg for details */
/*41*/ uint8_t scsiid; /*
* Selection out Id
......@@ -508,8 +506,10 @@ struct hardware_scb {
*/
/*42*/ uint8_t lun;
/*43*/ uint8_t task_attribute;
/*44*/ uint32_t hscb_busaddr;
/******* Long lun field only downloaded for full 8 byte lun support *******/
/*44*/ uint8_t cdb_len;
/*45*/ uint8_t task_management;
/*46*/ uint16_t tag; /* Reused by Sequencer. */
/********** Long lun field only downloaded for full 8 byte lun support ********/
/*48*/ uint8_t pkt_long_lun[8];
/******* Fields below are not Downloaded (Sequencer may use for scratch) ******/
/*56*/ uint8_t spare[8];
......
......@@ -39,7 +39,7 @@
*
* $FreeBSD$
*/
VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#65 $"
VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#66 $"
/*
* This file is processed by the aic7xxx_asm utility for use in assembling
......@@ -3484,9 +3484,6 @@ scratch_ram {
LONGJMP_ADDR {
size 2
}
LONGJMP_SCB {
size 2
}
ACCUM_SAVE {
size 1
}
......@@ -3799,23 +3796,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 +3814,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 +3846,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
......
......@@ -40,7 +40,7 @@
* $FreeBSD$
*/
VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#89 $"
VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#90 $"
PATCH_ARG_LIST = "struct ahd_softc *ahd"
PREFIX = "ahd_"
......@@ -108,8 +108,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;
......@@ -135,42 +135,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)
......@@ -179,6 +157,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:
......@@ -263,6 +242,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;
......@@ -366,8 +352,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:
......@@ -1035,9 +1019,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;
/*
......@@ -1053,6 +1046,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;
......@@ -1363,7 +1362,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;
......@@ -1667,6 +1666,7 @@ saveptr_active_fifo:
or SEQINTCTL, IRET ret;
cfg4data_intr:
inc SCB_FIFO_USE_COUNT;
test SCB_SGPTR[0], SG_LIST_NULL jnz pkt_handle_overrun;
call load_first_seg;
call pkt_handle_xfer;
......@@ -1729,7 +1729,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;
......@@ -1751,7 +1750,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;
......@@ -1760,7 +1759,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.
......@@ -1789,118 +1788,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:
......@@ -1929,6 +1944,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;
......@@ -1970,7 +1986,8 @@ 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;
test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle;
or LONGJMP_ADDR[1], INVALID_ADDR;
mvi DFFSXFRCTL, CLRCHN ret;
......
......@@ -37,7 +37,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#183 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#184 $
*
* $FreeBSD$
*/
......@@ -604,7 +604,16 @@ ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat)
break;
case STATUS_OVERRUN:
{
printf("%s: Status Overrun", ahd_name(ahd));
struct scb *scb;
u_int scbid;
scbid = ahd_get_scbptr(ahd);
scb = ahd_lookup_scb(ahd, scbid);
if (scb != NULL)
ahd_print_path(ahd, scb);
else
printf("%s: ", ahd_name(ahd));
printf("SCB %d Packetized Status Overrun", scbid);
ahd_dump_card_state(ahd);
ahd_reset_channel(ahd, 'A', /*Initiate Reset*/TRUE);
break;
......@@ -6056,7 +6065,6 @@ ahd_chip_init(struct ahd_softc *ahd)
for (i = 0; i < 2; i++) {
ahd_set_modes(ahd, AHD_MODE_DFF0 + i, AHD_MODE_DFF0 + i);
ahd_outb(ahd, LONGJMP_ADDR + 1, INVALID_ADDR);
ahd_outw(ahd, LONGJMP_SCB, SCB_LIST_NULL);
ahd_outb(ahd, SG_STATE, 0);
ahd_outb(ahd, CLRSEQINTSRC, 0xFF);
ahd_outb(ahd, SEQIMODE,
......@@ -8611,11 +8619,11 @@ ahd_dump_card_state(struct ahd_softc *ahd)
LIST_FOREACH(scb, &ahd->pending_scbs, pending_links) {
if (i++ > AHD_SCB_MAX)
break;
cur_col = printf("\n%3d ", SCB_GET_TAG(scb));
cur_col = printf("\n%3d FIFO_USE[0x%x] ", SCB_GET_TAG(scb),
ahd_inb(ahd, SCB_FIFO_USE_COUNT));
ahd_set_scbptr(ahd, SCB_GET_TAG(scb));
ahd_scb_control_print(ahd_inb(ahd, SCB_CONTROL), &cur_col, 60);
ahd_scb_scsiid_print(ahd_inb(ahd, SCB_SCSIID), &cur_col, 60);
ahd_scb_tag_print(ahd_inb(ahd, SCB_TAG), &cur_col, 60);
}
printf("\nTotal %d\n", i);
......@@ -8678,12 +8686,10 @@ ahd_dump_card_state(struct ahd_softc *ahd)
ahd_set_modes(ahd, AHD_MODE_DFF0 + i, AHD_MODE_DFF0 + i);
fifo_scbptr = ahd_get_scbptr(ahd);
printf("\n%s: FIFO%d %s, LONGJMP == 0x%x, "
"SCB 0x%x, LJSCB 0x%x\n",
printf("\n%s: FIFO%d %s, LONGJMP == 0x%x, SCB 0x%x\n",
ahd_name(ahd), i,
(dffstat & (FIFO0FREE << i)) ? "Free" : "Active",
ahd_inw(ahd, LONGJMP_ADDR), fifo_scbptr,
ahd_inw(ahd, LONGJMP_SCB));
ahd_inw(ahd, LONGJMP_ADDR), fifo_scbptr);
cur_col = 0;
ahd_seqimode_print(ahd_inb(ahd, SEQIMODE), &cur_col, 50);
ahd_seqintsrc_print(ahd_inb(ahd, SEQINTSRC), &cur_col, 50);
......
......@@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#89 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#65 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#90 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#66 $
*/
typedef int (ahd_reg_print_t)(u_int, u_int *, u_int);
typedef struct ahd_reg_parse_entry {
......@@ -1923,18 +1923,11 @@ ahd_reg_print_t ahd_longjmp_addr_print;
ahd_print_register(NULL, 0, "LONGJMP_ADDR", 0xf8, regvalue, cur_col, wrap)
#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
......@@ -3508,9 +3501,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 WAITING_SCB_TAILS 0x100
......@@ -3656,29 +3647,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 +3683,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 +3767,5 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
/* Exported Labels */
#define LABEL_seq_isr 0x26d
#define LABEL_timer_isr 0x269
#define LABEL_seq_isr 0x264
#define LABEL_timer_isr 0x260
......@@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#89 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#65 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#90 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#66 $
*/
#include "aic79xx_osm.h"
......@@ -3097,18 +3097,11 @@ ahd_longjmp_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
0xf8, regvalue, cur_col, wrap));
}
int
ahd_longjmp_scb_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "LONGJMP_SCB",
0xfa, regvalue, cur_col, wrap));
}
int
ahd_accum_save_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "ACCUM_SAVE",
0xfc, regvalue, cur_col, wrap));
0xfa, regvalue, cur_col, wrap));
}
int
......@@ -3491,50 +3484,11 @@ ahd_scb_sense_busaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
0x18c, regvalue, cur_col, wrap));
}
int
ahd_scb_tag_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_TAG",
0x190, regvalue, cur_col, wrap));
}
static ahd_reg_parse_entry_t SCB_CDB_LEN_parse_table[] = {
{ "SCB_CDB_LEN_PTR", 0x80, 0x80 }
};
int
ahd_scb_cdb_len_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(SCB_CDB_LEN_parse_table, 1, "SCB_CDB_LEN",
0x192, regvalue, cur_col, wrap));
}
int
ahd_scb_task_management_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_TASK_MANAGEMENT",
0x193, regvalue, cur_col, wrap));
}
int
ahd_scb_next_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_NEXT",
0x194, regvalue, cur_col, wrap));
}
int
ahd_scb_next2_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_NEXT2",
0x196, regvalue, cur_col, wrap));
}
int
ahd_scb_dataptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_DATAPTR",
0x198, regvalue, cur_col, wrap));
0x190, regvalue, cur_col, wrap));
}
static ahd_reg_parse_entry_t SCB_DATACNT_parse_table[] = {
......@@ -3546,7 +3500,7 @@ int
ahd_scb_datacnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(SCB_DATACNT_parse_table, 2, "SCB_DATACNT",
0x1a0, regvalue, cur_col, wrap));
0x198, regvalue, cur_col, wrap));
}
static ahd_reg_parse_entry_t SCB_SGPTR_parse_table[] = {
......@@ -3559,9 +3513,30 @@ int
ahd_scb_sgptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(SCB_SGPTR_parse_table, 3, "SCB_SGPTR",
0x19c, regvalue, cur_col, wrap));
}
int
ahd_scb_busaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_BUSADDR",
0x1a0, regvalue, cur_col, wrap));
}
int
ahd_scb_next_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_NEXT",
0x1a4, regvalue, cur_col, wrap));
}
int
ahd_scb_next2_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_NEXT2",
0x1a6, regvalue, cur_col, wrap));
}
static ahd_reg_parse_entry_t SCB_CONTROL_parse_table[] = {
{ "SCB_TAG_TYPE", 0x03, 0x03 },
{ "DISCONNECTED", 0x04, 0x04 },
......@@ -3609,13 +3584,31 @@ ahd_scb_task_attribute_print(u_int regvalue, u_int *cur_col, u_int wrap)
0x1ab, regvalue, cur_col, wrap));
}
static ahd_reg_parse_entry_t SCB_CDB_LEN_parse_table[] = {
{ "SCB_CDB_LEN_PTR", 0x80, 0x80 }
};
int
ahd_scb_busaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
ahd_scb_cdb_len_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_BUSADDR",
return (ahd_print_register(SCB_CDB_LEN_parse_table, 1, "SCB_CDB_LEN",
0x1ac, regvalue, cur_col, wrap));
}
int
ahd_scb_task_management_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_TASK_MANAGEMENT",
0x1ad, regvalue, cur_col, wrap));
}
int
ahd_scb_tag_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
return (ahd_print_register(NULL, 0, "SCB_TAG",
0x1ae, regvalue, cur_col, wrap));
}
int
ahd_scb_spare_print(u_int regvalue, u_int *cur_col, u_int wrap)
{
......
......@@ -2,102 +2,89 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#89 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#65 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#90 $
* $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#66 $
*/
static uint8_t seqprog[] = {
0xff, 0x02, 0x06, 0x78,
0x00, 0xea, 0x50, 0x59,
0x00, 0xea, 0x36, 0x59,
0x01, 0xea, 0x04, 0x30,
0xff, 0x04, 0x0c, 0x78,
0x19, 0xea, 0x50, 0x59,
0x19, 0xea, 0x36, 0x59,
0x19, 0xea, 0x04, 0x00,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x60, 0x3a, 0x1a, 0x68,
0x04, 0x47, 0x1b, 0x68,
0xff, 0x21, 0x1b, 0x70,
0x40, 0x4b, 0x92, 0x69,
0x00, 0xe2, 0x54, 0x59,
0x40, 0x4b, 0x92, 0x69,
0x20, 0x4b, 0x82, 0x69,
0x40, 0x4b, 0x78, 0x69,
0x00, 0xe2, 0x3a, 0x59,
0x40, 0x4b, 0x78, 0x69,
0x20, 0x4b, 0x68, 0x69,
0xfc, 0x42, 0x24, 0x78,
0x10, 0x40, 0x24, 0x78,
0x00, 0xe2, 0xe0, 0x5d,
0x00, 0xe2, 0xb6, 0x5d,
0x20, 0x4d, 0x28, 0x78,
0x00, 0xe2, 0xe0, 0x5d,
0x00, 0xe2, 0xb6, 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, 0x70, 0x58,
0x00, 0xe2, 0x80, 0x58,
0x00, 0xe2, 0x56, 0x58,
0x00, 0xe2, 0x66, 0x58,
0x00, 0xe2, 0x06, 0x40,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x01, 0x52, 0x96, 0x7d,
0x01, 0x52, 0x64, 0x78,
0x02, 0x58, 0x50, 0x31,
0xff, 0xea, 0x10, 0x0b,
0xff, 0x93, 0x4f, 0x78,
0xff, 0xad, 0x4f, 0x78,
0x50, 0x4b, 0x4a, 0x68,
0xbf, 0x3a, 0x74, 0x08,
0x14, 0xea, 0x50, 0x59,
0x14, 0xea, 0x36, 0x59,
0x14, 0xea, 0x04, 0x00,
0x08, 0xa8, 0x51, 0x03,
0x01, 0xa4, 0x57, 0x78,
0x00, 0xe2, 0x4c, 0x5b,
0xff, 0xae, 0x3f, 0x68,
0x00, 0xe2, 0x38, 0x5b,
0x00, 0xe2, 0x3e, 0x40,
0xff, 0xea, 0xd4, 0x19,
0x02, 0xa8, 0x84, 0x32,
0x00, 0xea, 0x44, 0x59,
0x00, 0xea, 0x2a, 0x59,
0x01, 0xea, 0x00, 0x30,
0x00, 0xe2, 0xcc, 0x5d,
0x00, 0xe2, 0x96, 0x4d,
0x11, 0xea, 0x44, 0x59,
0x80, 0xf9, 0x5e, 0x68,
0x00, 0xe2, 0x28, 0x59,
0x11, 0xea, 0x2a, 0x59,
0x11, 0xea, 0x00, 0x00,
0x00, 0xe2, 0xcc, 0x5d,
0x00, 0xe2, 0x96, 0x4d,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x00, 0x00,
0x00, 0xe2, 0x44, 0x43,
0x00, 0xea, 0x44, 0x59,
0x01, 0xea, 0x00, 0x30,
0x80, 0xf9, 0x78, 0x68,
0x00, 0xe2, 0x42, 0x59,
0x11, 0xea, 0x44, 0x59,
0x11, 0xea, 0x00, 0x00,
0x80, 0xf9, 0x42, 0x79,
0x80, 0xf9, 0x28, 0x79,
0xff, 0xea, 0xd4, 0x0d,
0x22, 0xea, 0x44, 0x59,
0x22, 0xea, 0x2a, 0x59,
0x22, 0xea, 0x00, 0x00,
0x10, 0x16, 0x8a, 0x78,
0x10, 0x16, 0x70, 0x78,
0x01, 0x0b, 0xa2, 0x32,
0x10, 0x16, 0x2c, 0x00,
0x18, 0xad, 0xf8, 0x78,
0x04, 0xad, 0xc6, 0x68,
0x80, 0xad, 0x96, 0x7d,
0x10, 0xad, 0x94, 0x78,
0x18, 0xad, 0xe0, 0x78,
0x04, 0xad, 0xac, 0x68,
0x80, 0xad, 0x64, 0x78,
0x10, 0xad, 0x7a, 0x78,
0xe7, 0xad, 0x5a, 0x0d,
0xe7, 0xad, 0x5a, 0x09,
0x00, 0xe2, 0xa2, 0x58,
0x00, 0xe2, 0x88, 0x58,
0xff, 0xea, 0x56, 0x02,
0x04, 0x7c, 0x78, 0x32,
0x20, 0x16, 0x96, 0x7d,
0x20, 0x16, 0x64, 0x78,
0x04, 0x38, 0x79, 0x32,
0x80, 0x37, 0x6f, 0x16,
0xff, 0x2d, 0xb1, 0x60,
0xff, 0x29, 0xb1, 0x60,
0x40, 0x51, 0xc1, 0x78,
0xff, 0x4f, 0xb1, 0x68,
0xff, 0x2d, 0x97, 0x60,
0xff, 0x29, 0x97, 0x60,
0x40, 0x51, 0xa7, 0x78,
0xff, 0x4f, 0x97, 0x68,
0xff, 0x4d, 0xc1, 0x19,
0x00, 0x4e, 0xd5, 0x19,
0x00, 0xe2, 0xc0, 0x50,
0x00, 0xe2, 0xa6, 0x50,
0x01, 0x4c, 0xc1, 0x31,
0x00, 0x50, 0xd5, 0x19,
0x00, 0xe2, 0xc0, 0x48,
0x80, 0x18, 0x96, 0x7d,
0x00, 0xe2, 0xa6, 0x48,
0x80, 0x18, 0x64, 0x78,
0x02, 0x4a, 0x1d, 0x30,
0x10, 0xea, 0x18, 0x00,
0x60, 0x18, 0x30, 0x00,
......@@ -105,35 +92,36 @@ static uint8_t seqprog[] = {
0x02, 0xea, 0x02, 0x00,
0xff, 0xea, 0xa0, 0x0a,
0x80, 0x18, 0x30, 0x04,
0x40, 0xad, 0x96, 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, 0xed, 0x68,
0x10, 0xa8, 0xd5, 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, 0xec, 0x70,
0x02, 0xa0, 0x28, 0x37,
0xff, 0x21, 0xf5, 0x70,
0xff, 0xa9, 0xd4, 0x70,
0x02, 0xa0, 0x48, 0x37,
0xff, 0x21, 0xdd, 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, 0xfd, 0x68,
0x40, 0x16, 0x28, 0x69,
0xff, 0x2d, 0x2d, 0x61,
0xff, 0x29, 0x97, 0x75,
0x04, 0x47, 0xe5, 0x68,
0x40, 0x16, 0x10, 0x69,
0xff, 0x2d, 0x15, 0x61,
0xff, 0x29, 0x65, 0x70,
0x01, 0x37, 0xc1, 0x31,
0x02, 0x28, 0x55, 0x32,
0x01, 0xea, 0x5a, 0x01,
......@@ -145,26 +133,25 @@ static uint8_t seqprog[] = {
0x01, 0x50, 0xa1, 0x1a,
0xff, 0x4e, 0x9d, 0x1a,
0xff, 0x4f, 0x9f, 0x22,
0xff, 0x8d, 0x21, 0x71,
0x80, 0xac, 0x20, 0x71,
0x20, 0x16, 0x20, 0x69,
0xff, 0x8d, 0x09, 0x71,
0x80, 0xac, 0x08, 0x71,
0x20, 0x16, 0x08, 0x69,
0x02, 0x8c, 0x51, 0x31,
0x00, 0xe2, 0x0a, 0x41,
0x00, 0xe2, 0xf2, 0x40,
0x01, 0xac, 0x08, 0x31,
0x09, 0xea, 0x5a, 0x01,
0x02, 0x8c, 0x51, 0x32,
0xff, 0xea, 0x1a, 0x07,
0x04, 0x24, 0xf9, 0x30,
0x1d, 0xea, 0x38, 0x41,
0x1d, 0xea, 0x20, 0x41,
0x02, 0x2c, 0x51, 0x31,
0x04, 0xac, 0xf9, 0x30,
0x19, 0xea, 0x38, 0x59,
0x04, 0xa0, 0xf9, 0x30,
0x19, 0xea, 0x20, 0x59,
0x02, 0x8c, 0x59, 0x32,
0x02, 0x28, 0x19, 0x33,
0x02, 0xa8, 0x50, 0x36,
0x06, 0xea, 0x08, 0x81,
0x01, 0xe2, 0x5a, 0x35,
0x02, 0xa8, 0xf4, 0x31,
0x02, 0xf2, 0xf0, 0x35,
0x02, 0xf2, 0xf0, 0x31,
0x02, 0xf8, 0xe4, 0x35,
......@@ -180,23 +167,23 @@ static uint8_t seqprog[] = {
0x02, 0x20, 0xb9, 0x30,
0x02, 0x20, 0x51, 0x31,
0x4c, 0xa9, 0xd7, 0x28,
0x10, 0xa8, 0x63, 0x79,
0x10, 0xa8, 0x49, 0x79,
0x01, 0x6b, 0xc0, 0x30,
0x02, 0x64, 0xc8, 0x00,
0x40, 0x3a, 0x74, 0x04,
0x00, 0xe2, 0x70, 0x58,
0x33, 0xea, 0x44, 0x59,
0x00, 0xe2, 0x56, 0x58,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x30, 0x3f, 0xc0, 0x09,
0x30, 0xe0, 0x64, 0x61,
0x20, 0x3f, 0x7a, 0x69,
0x10, 0x3f, 0x64, 0x79,
0x30, 0xe0, 0x4a, 0x61,
0x20, 0x3f, 0x60, 0x69,
0x10, 0x3f, 0x4a, 0x79,
0x02, 0xea, 0x7e, 0x00,
0x00, 0xea, 0x44, 0x59,
0x00, 0xea, 0x2a, 0x59,
0x01, 0xea, 0x00, 0x30,
0x02, 0x48, 0x51, 0x35,
0x01, 0xea, 0x7e, 0x00,
0x11, 0xea, 0x44, 0x59,
0x11, 0xea, 0x2a, 0x59,
0x11, 0xea, 0x00, 0x00,
0x02, 0x48, 0x51, 0x35,
0x08, 0xea, 0x98, 0x00,
......@@ -206,11 +193,11 @@ static uint8_t seqprog[] = {
0x0f, 0x67, 0xc0, 0x09,
0x00, 0x34, 0x69, 0x02,
0x20, 0xea, 0x96, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x40, 0x3a, 0xae, 0x69,
0x00, 0xe2, 0xde, 0x41,
0x40, 0x3a, 0x94, 0x69,
0x02, 0x55, 0x06, 0x68,
0x02, 0x56, 0xae, 0x69,
0xff, 0x5b, 0xae, 0x61,
0x02, 0x56, 0x94, 0x69,
0xff, 0x5b, 0x94, 0x61,
0x02, 0x20, 0x51, 0x31,
0x80, 0xea, 0xb2, 0x01,
0x44, 0xea, 0x00, 0x00,
......@@ -218,36 +205,36 @@ static uint8_t seqprog[] = {
0x33, 0xea, 0x00, 0x00,
0xff, 0xea, 0xb2, 0x09,
0xff, 0xe0, 0xc0, 0x19,
0xff, 0xe0, 0xb0, 0x79,
0x02, 0x94, 0x51, 0x31,
0x00, 0xe2, 0xa6, 0x41,
0xff, 0xe0, 0x96, 0x79,
0x02, 0xa4, 0x51, 0x31,
0x00, 0xe2, 0x8c, 0x41,
0x02, 0x5e, 0x50, 0x31,
0x02, 0xa8, 0xb8, 0x30,
0x02, 0x5c, 0x50, 0x31,
0xff, 0x95, 0xc1, 0x71,
0x02, 0x94, 0x41, 0x31,
0xff, 0xa5, 0xa7, 0x71,
0x02, 0xa4, 0x41, 0x31,
0x02, 0x22, 0x51, 0x31,
0x02, 0xa0, 0x2c, 0x33,
0x02, 0xa0, 0x4c, 0x33,
0x02, 0xa0, 0x44, 0x32,
0x00, 0xe2, 0xca, 0x41,
0x10, 0xa8, 0xcb, 0x69,
0x00, 0xe2, 0xb0, 0x41,
0x10, 0xa8, 0xb1, 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, 0xd3, 0x61,
0x02, 0xa6, 0x41, 0x32,
0xff, 0x21, 0xb9, 0x61,
0xff, 0xea, 0x46, 0x02,
0x02, 0x5c, 0x50, 0x31,
0x40, 0xea, 0x96, 0x00,
0x02, 0x56, 0xe8, 0x6d,
0x01, 0x55, 0xe8, 0x6d,
0x10, 0xa8, 0xdf, 0x79,
0x10, 0x40, 0xe8, 0x69,
0x01, 0x56, 0xe8, 0x79,
0xff, 0x93, 0x07, 0x78,
0x13, 0xea, 0x50, 0x59,
0x02, 0x56, 0xbe, 0x6d,
0x01, 0x55, 0xbe, 0x6d,
0x10, 0xa8, 0xc5, 0x79,
0x10, 0x40, 0xce, 0x69,
0x01, 0x56, 0xce, 0x79,
0xff, 0xad, 0x07, 0x78,
0x13, 0xea, 0x36, 0x59,
0x13, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x06, 0x40,
0xbf, 0x3a, 0x74, 0x08,
......@@ -258,104 +245,104 @@ static uint8_t seqprog[] = {
0x40, 0xea, 0x66, 0x02,
0x08, 0x3c, 0x78, 0x00,
0x80, 0xea, 0x62, 0x02,
0x00, 0xe2, 0xac, 0x5b,
0x00, 0xe2, 0x9a, 0x5b,
0x01, 0x36, 0xc1, 0x31,
0x9f, 0xe0, 0x4e, 0x7c,
0x80, 0xe0, 0x0c, 0x72,
0xa0, 0xe0, 0x44, 0x72,
0xc0, 0xe0, 0x3a, 0x72,
0xe0, 0xe0, 0x74, 0x72,
0x01, 0xea, 0x50, 0x59,
0x9f, 0xe0, 0x3c, 0x7c,
0x80, 0xe0, 0xf2, 0x71,
0xa0, 0xe0, 0x2a, 0x72,
0xc0, 0xe0, 0x20, 0x72,
0xe0, 0xe0, 0x5a, 0x72,
0x01, 0xea, 0x36, 0x59,
0x01, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x80, 0x33, 0x13, 0x7a,
0x03, 0xea, 0x50, 0x59,
0x00, 0xe2, 0xde, 0x41,
0x80, 0x33, 0xf9, 0x79,
0x03, 0xea, 0x36, 0x59,
0x03, 0xea, 0x04, 0x00,
0xee, 0x00, 0x1a, 0x6a,
0xee, 0x00, 0x00, 0x6a,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x02, 0xa8, 0x90, 0x32,
0x00, 0xe2, 0x6a, 0x59,
0xef, 0x92, 0xd5, 0x19,
0x00, 0xe2, 0x2a, 0x52,
0x00, 0xe2, 0x50, 0x59,
0xef, 0xac, 0xd5, 0x19,
0x00, 0xe2, 0x10, 0x52,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
0x00, 0xe2, 0x30, 0x42,
0x01, 0x92, 0xd1, 0x30,
0x00, 0xe2, 0x16, 0x42,
0x01, 0xac, 0xd1, 0x30,
0x10, 0x80, 0x89, 0x31,
0x20, 0xea, 0x32, 0x00,
0xbf, 0x33, 0x67, 0x0a,
0x20, 0x19, 0x32, 0x6a,
0x02, 0x4d, 0xf8, 0x69,
0x20, 0x19, 0x18, 0x6a,
0x02, 0x4d, 0xde, 0x69,
0x40, 0x33, 0x67, 0x02,
0x00, 0xe2, 0xf8, 0x41,
0x80, 0x33, 0xb1, 0x6a,
0x00, 0xe2, 0xde, 0x41,
0x80, 0x33, 0x97, 0x6a,
0x01, 0x44, 0x10, 0x33,
0x08, 0xa8, 0x51, 0x03,
0x00, 0xe2, 0xf8, 0x41,
0x00, 0xe2, 0xde, 0x41,
0x10, 0xea, 0x80, 0x00,
0x01, 0x31, 0xc5, 0x31,
0x80, 0xe2, 0x60, 0x62,
0x10, 0xa8, 0x85, 0x6a,
0x80, 0xe2, 0x46, 0x62,
0x10, 0xa8, 0x6b, 0x6a,
0xc0, 0xaa, 0xc5, 0x01,
0x40, 0xa8, 0x51, 0x6a,
0x40, 0xa8, 0x37, 0x6a,
0xbf, 0xe2, 0xc4, 0x09,
0x20, 0xa8, 0x65, 0x7a,
0x20, 0xa8, 0x4b, 0x7a,
0x01, 0xe2, 0x88, 0x30,
0x00, 0xe2, 0xac, 0x5b,
0xa0, 0x36, 0x6d, 0x62,
0x00, 0xe2, 0x9a, 0x5b,
0xa0, 0x36, 0x53, 0x62,
0x23, 0xa8, 0x89, 0x08,
0x00, 0xe2, 0xac, 0x5b,
0xa0, 0x36, 0x6d, 0x62,
0x00, 0xa8, 0x64, 0x42,
0xff, 0xe2, 0x64, 0x62,
0x00, 0xe2, 0x84, 0x42,
0x00, 0xe2, 0x9a, 0x5b,
0xa0, 0x36, 0x53, 0x62,
0x00, 0xa8, 0x4a, 0x42,
0xff, 0xe2, 0x4a, 0x62,
0x00, 0xe2, 0x6a, 0x42,
0x40, 0xea, 0x98, 0x00,
0x01, 0xe2, 0x88, 0x30,
0x00, 0xe2, 0xac, 0x5b,
0xa0, 0x36, 0x43, 0x72,
0x00, 0xe2, 0x9a, 0x5b,
0xa0, 0x36, 0x29, 0x72,
0x40, 0xea, 0x98, 0x00,
0x01, 0x31, 0x89, 0x32,
0x08, 0xea, 0x62, 0x02,
0x00, 0xe2, 0xf8, 0x41,
0xe0, 0xea, 0xc8, 0x5b,
0x80, 0xe0, 0xbc, 0x6a,
0x04, 0xe0, 0x5a, 0x73,
0x02, 0xe0, 0x8a, 0x73,
0x00, 0xea, 0x1a, 0x73,
0x03, 0xe0, 0x9a, 0x73,
0x23, 0xe0, 0x96, 0x72,
0x08, 0xe0, 0xb8, 0x72,
0x00, 0xe2, 0xac, 0x5b,
0x07, 0xea, 0x50, 0x59,
0x00, 0xe2, 0xde, 0x41,
0xe0, 0xea, 0xb6, 0x5b,
0x80, 0xe0, 0xa2, 0x6a,
0x04, 0xe0, 0x48, 0x73,
0x02, 0xe0, 0x78, 0x73,
0x00, 0xea, 0x00, 0x73,
0x03, 0xe0, 0x88, 0x73,
0x23, 0xe0, 0x7c, 0x72,
0x08, 0xe0, 0x9e, 0x72,
0x00, 0xe2, 0x9a, 0x5b,
0x07, 0xea, 0x36, 0x59,
0x07, 0xea, 0x04, 0x00,
0x08, 0x42, 0xf9, 0x71,
0x04, 0x42, 0x93, 0x62,
0x08, 0x42, 0xdf, 0x71,
0x04, 0x42, 0x79, 0x62,
0x01, 0x43, 0x89, 0x30,
0x00, 0xe2, 0x84, 0x42,
0x00, 0xe2, 0x6a, 0x42,
0x01, 0x44, 0xd4, 0x31,
0x00, 0xe2, 0x84, 0x42,
0x00, 0xe2, 0x6a, 0x42,
0x01, 0x00, 0x60, 0x32,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x4c, 0x34, 0xc1, 0x28,
0x01, 0x64, 0xc0, 0x31,
0x00, 0x30, 0x45, 0x59,
0x00, 0x30, 0x2b, 0x59,
0x01, 0x30, 0x01, 0x30,
0x01, 0xe0, 0xb6, 0x7a,
0xa0, 0xea, 0xbe, 0x5b,
0x01, 0xa0, 0xb6, 0x62,
0x01, 0x84, 0xaf, 0x7a,
0x01, 0xa7, 0xb8, 0x7a,
0x00, 0xe2, 0xb8, 0x42,
0x03, 0xea, 0x50, 0x59,
0x01, 0xe0, 0x9c, 0x7a,
0xa0, 0xea, 0xac, 0x5b,
0x01, 0xa0, 0x9c, 0x62,
0x01, 0x84, 0x95, 0x7a,
0x01, 0xa7, 0x9e, 0x7a,
0x00, 0xe2, 0x9e, 0x42,
0x03, 0xea, 0x36, 0x59,
0x03, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xb8, 0x42,
0x07, 0xea, 0xd0, 0x5b,
0x00, 0xe2, 0x9e, 0x42,
0x07, 0xea, 0xbe, 0x5b,
0x01, 0x44, 0xd4, 0x31,
0x00, 0xe2, 0xf8, 0x41,
0x00, 0xe2, 0xde, 0x41,
0x3f, 0xe0, 0x6a, 0x0a,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
......@@ -366,78 +353,82 @@ static uint8_t seqprog[] = {
0x01, 0xea, 0xc6, 0x01,
0x02, 0xe2, 0xc8, 0x31,
0x02, 0xec, 0x40, 0x31,
0xff, 0xa1, 0xd8, 0x72,
0xff, 0xa1, 0xbe, 0x72,
0x02, 0xe8, 0xda, 0x31,
0x02, 0xa0, 0x50, 0x31,
0x00, 0xe2, 0xfa, 0x42,
0x00, 0xe2, 0xe0, 0x42,
0x80, 0x33, 0x67, 0x02,
0x01, 0x44, 0xd4, 0x31,
0x00, 0xe2, 0xac, 0x5b,
0x00, 0xe2, 0x9a, 0x5b,
0x01, 0x33, 0x67, 0x02,
0xe0, 0x36, 0x15, 0x63,
0xe0, 0x36, 0xfb, 0x62,
0x02, 0x33, 0x67, 0x02,
0x20, 0x46, 0x0e, 0x63,
0x20, 0x46, 0xf4, 0x62,
0xff, 0xea, 0x52, 0x09,
0xa8, 0xea, 0xbe, 0x5b,
0x04, 0xa8, 0xf5, 0x7a,
0xa8, 0xea, 0xac, 0x5b,
0x04, 0xa8, 0xdb, 0x7a,
0x01, 0x34, 0xc1, 0x31,
0x00, 0xa9, 0xf5, 0x62,
0x00, 0xa9, 0xdb, 0x62,
0x01, 0x35, 0xc1, 0x31,
0x00, 0xaa, 0xff, 0x72,
0x00, 0xaa, 0xe5, 0x72,
0x01, 0xa9, 0x52, 0x11,
0xff, 0xa9, 0xea, 0x6a,
0x00, 0xe2, 0x0e, 0x43,
0xff, 0xa9, 0xd0, 0x6a,
0x00, 0xe2, 0xf4, 0x42,
0x10, 0x33, 0x67, 0x02,
0x04, 0xa8, 0x0f, 0x7b,
0x04, 0xa8, 0xf5, 0x7a,
0xfb, 0xa8, 0x51, 0x0b,
0xff, 0xea, 0x66, 0x0a,
0x01, 0xa4, 0x09, 0x6b,
0x01, 0x9c, 0xef, 0x6a,
0x02, 0xa8, 0x90, 0x32,
0x00, 0xe2, 0x6a, 0x59,
0x10, 0xa8, 0xb9, 0x7a,
0xff, 0xea, 0xd0, 0x5b,
0x00, 0xe2, 0xb8, 0x42,
0x04, 0xea, 0x50, 0x59,
0x00, 0xe2, 0x50, 0x59,
0x10, 0xa8, 0x9f, 0x7a,
0xff, 0xea, 0xbe, 0x5b,
0x00, 0xe2, 0x9e, 0x42,
0x04, 0xea, 0x36, 0x59,
0x04, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xb8, 0x42,
0x04, 0xea, 0x50, 0x59,
0x00, 0xe2, 0x9e, 0x42,
0x04, 0xea, 0x36, 0x59,
0x04, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x08, 0xa8, 0xb1, 0x7a,
0xc0, 0x33, 0x25, 0x7b,
0x80, 0x33, 0xb1, 0x6a,
0xff, 0x88, 0x25, 0x6b,
0x40, 0x33, 0xb1, 0x6a,
0x10, 0xa8, 0x2b, 0x7b,
0x0a, 0xea, 0x50, 0x59,
0x00, 0xe2, 0xde, 0x41,
0x08, 0xa8, 0x97, 0x7a,
0xc0, 0x33, 0x0b, 0x7b,
0x80, 0x33, 0x97, 0x6a,
0xff, 0x88, 0x0b, 0x6b,
0x40, 0x33, 0x97, 0x6a,
0x10, 0xa8, 0x11, 0x7b,
0x0a, 0xea, 0x36, 0x59,
0x0a, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x44, 0x5b,
0x00, 0xe2, 0x76, 0x43,
0x50, 0x4b, 0x32, 0x6b,
0x00, 0xe2, 0x30, 0x5b,
0x00, 0xe2, 0x64, 0x43,
0x50, 0x4b, 0x18, 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, 0x44, 0x59,
0x01, 0xfa, 0xc0, 0x35,
0x02, 0xa8, 0x84, 0x32,
0x02, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x02, 0x42, 0x51, 0x31,
0xff, 0x88, 0x51, 0x6b,
0x01, 0xa4, 0x4d, 0x6b,
0x02, 0xa4, 0x55, 0x6b,
0x01, 0x84, 0x55, 0x7b,
0xff, 0xae, 0x65, 0x68,
0xff, 0x88, 0x3d, 0x6b,
0x01, 0x9c, 0x39, 0x6b,
0x02, 0x9c, 0x41, 0x6b,
0x01, 0x84, 0x41, 0x7b,
0x02, 0x28, 0x19, 0x33,
0x02, 0xa8, 0x50, 0x36,
0xff, 0x88, 0x55, 0x73,
0x00, 0xe2, 0x2e, 0x5b,
0xff, 0x88, 0x41, 0x73,
0x00, 0xe2, 0x14, 0x5b,
0x02, 0xa8, 0x5c, 0x33,
0x02, 0x2c, 0x19, 0x33,
0x02, 0xa8, 0x58, 0x32,
0x04, 0xa4, 0x49, 0x07,
0xc0, 0x33, 0xb1, 0x6a,
0x04, 0x9c, 0x39, 0x07,
0xc0, 0x33, 0x97, 0x6a,
0x04, 0xa8, 0x51, 0x03,
0x20, 0xa8, 0x77, 0x6b,
0x20, 0xa8, 0x65, 0x6b,
0x02, 0xa8, 0x40, 0x31,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
......@@ -452,73 +443,73 @@ static uint8_t seqprog[] = {
0xf7, 0x57, 0xae, 0x08,
0x08, 0xea, 0x98, 0x00,
0x01, 0x44, 0xd4, 0x31,
0xee, 0x00, 0x80, 0x6b,
0xee, 0x00, 0x6e, 0x6b,
0x02, 0xea, 0xb4, 0x00,
0x00, 0xe2, 0xa8, 0x5b,
0x09, 0x4c, 0x82, 0x7b,
0x00, 0xe2, 0x96, 0x5b,
0x09, 0x4c, 0x70, 0x7b,
0x08, 0x4c, 0x06, 0x68,
0x0b, 0xea, 0x50, 0x59,
0x0b, 0xea, 0x36, 0x59,
0x0b, 0xea, 0x04, 0x00,
0x01, 0x44, 0xd4, 0x31,
0x20, 0x33, 0xf9, 0x79,
0x00, 0xe2, 0x92, 0x5b,
0x00, 0xe2, 0xf8, 0x41,
0x01, 0x84, 0x97, 0x7b,
0x01, 0xa4, 0x49, 0x07,
0x08, 0x60, 0x30, 0x33,
0x08, 0x80, 0x41, 0x37,
0x20, 0x33, 0xdf, 0x79,
0x00, 0xe2, 0x80, 0x5b,
0x00, 0xe2, 0xde, 0x41,
0x01, 0x84, 0x85, 0x7b,
0x01, 0x9c, 0x39, 0x07,
0x08, 0x60, 0x20, 0x33,
0x08, 0x80, 0x31, 0x37,
0xdf, 0x33, 0x67, 0x0a,
0xee, 0x00, 0xa4, 0x6b,
0xee, 0x00, 0x92, 0x6b,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x00, 0xe2, 0x6a, 0x59,
0x00, 0xe2, 0xb8, 0x42,
0x00, 0xe2, 0x50, 0x59,
0x00, 0xe2, 0x9e, 0x42,
0x01, 0xea, 0x6c, 0x02,
0xc0, 0xea, 0x66, 0x06,
0xff, 0x42, 0xb8, 0x6b,
0x01, 0x41, 0xac, 0x6b,
0x02, 0x41, 0xac, 0x7b,
0xff, 0x42, 0xb8, 0x6b,
0x01, 0x41, 0xac, 0x6b,
0x02, 0x41, 0xac, 0x7b,
0xff, 0x42, 0xb8, 0x7b,
0x04, 0x4c, 0xac, 0x6b,
0xff, 0x42, 0xa6, 0x6b,
0x01, 0x41, 0x9a, 0x6b,
0x02, 0x41, 0x9a, 0x7b,
0xff, 0x42, 0xa6, 0x6b,
0x01, 0x41, 0x9a, 0x6b,
0x02, 0x41, 0x9a, 0x7b,
0xff, 0x42, 0xa6, 0x7b,
0x04, 0x4c, 0x9a, 0x6b,
0xe0, 0x41, 0x6c, 0x0e,
0x01, 0x44, 0xd4, 0x31,
0xff, 0x42, 0xc0, 0x7b,
0x04, 0x4c, 0xc0, 0x6b,
0xff, 0x42, 0xae, 0x7b,
0x04, 0x4c, 0xae, 0x6b,
0xe0, 0x41, 0x6c, 0x0a,
0xe0, 0x36, 0xf9, 0x61,
0xe0, 0x36, 0xdf, 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, 0xd8, 0x7b,
0x04, 0xa6, 0xc6, 0x7b,
0xff, 0xea, 0x5a, 0x09,
0xff, 0xea, 0x4c, 0x0d,
0x01, 0xa6, 0xf6, 0x6b,
0x10, 0xad, 0x96, 0x7d,
0x80, 0xad, 0xee, 0x6b,
0x08, 0xad, 0x96, 0x6d,
0x01, 0xa6, 0xe4, 0x6b,
0x10, 0xad, 0x64, 0x78,
0x80, 0xad, 0xdc, 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, 0x96, 0x7d,
0x04, 0xa6, 0x64, 0x78,
0xff, 0xea, 0x5a, 0x09,
0x03, 0x84, 0x59, 0x89,
0x03, 0xea, 0x4c, 0x01,
0x80, 0x1a, 0x96, 0x7d,
0x08, 0x19, 0x96, 0x7d,
0x80, 0x1a, 0x64, 0x78,
0x08, 0x19, 0x64, 0x78,
0x08, 0xb0, 0xe0, 0x30,
0x04, 0xb0, 0xe0, 0x30,
0x03, 0xb0, 0xf0, 0x30,
0x01, 0x78, 0x04, 0x7c,
0x01, 0x78, 0xf2, 0x7b,
0x01, 0xa7, 0x4e, 0x11,
0x01, 0xb0, 0x06, 0x33,
0x7f, 0x83, 0xe9, 0x08,
......@@ -529,275 +520,265 @@ static uint8_t seqprog[] = {
0x00, 0x86, 0x0d, 0x23,
0x00, 0x87, 0x0f, 0x23,
0x01, 0x84, 0xc5, 0x31,
0x01, 0xa7, 0x1a, 0x7c,
0x01, 0xa7, 0x08, 0x7c,
0x04, 0xe2, 0xc4, 0x01,
0x80, 0x83, 0x21, 0x7c,
0x80, 0x83, 0x0f, 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, 0x96, 0x55,
0x00, 0xe2, 0x64, 0x50,
0xfe, 0xa6, 0x4c, 0x0d,
0x0b, 0x98, 0xe1, 0x30,
0x01, 0xa0, 0x4f, 0x09,
0xfd, 0xa4, 0x49, 0x09,
0x80, 0xa3, 0x37, 0x7c,
0x0b, 0x90, 0xe1, 0x30,
0x01, 0x98, 0x4f, 0x09,
0xfd, 0x9c, 0x49, 0x09,
0x80, 0x9b, 0x25, 0x7c,
0x02, 0xa4, 0x48, 0x01,
0x01, 0xa7, 0x3a, 0x7c,
0x01, 0xa7, 0x28, 0x7c,
0x04, 0xa4, 0x48, 0x01,
0x01, 0xa4, 0x36, 0x30,
0xa8, 0xea, 0x32, 0x00,
0xfd, 0xa4, 0x49, 0x0b,
0x05, 0xa3, 0x07, 0x33,
0x80, 0x83, 0x47, 0x6c,
0xfd, 0x9c, 0x39, 0x0b,
0x05, 0x9b, 0x07, 0x33,
0x80, 0x83, 0x35, 0x6c,
0x02, 0xea, 0x4c, 0x05,
0xff, 0xea, 0x4c, 0x0d,
0x00, 0xe2, 0x3c, 0x59,
0x02, 0xa6, 0xda, 0x6b,
0x00, 0xe2, 0x24, 0x59,
0x02, 0xa6, 0xc8, 0x6b,
0x80, 0xf9, 0xf2, 0x05,
0xc0, 0x33, 0x55, 0x7c,
0x03, 0xea, 0x50, 0x59,
0xc0, 0x33, 0x43, 0x7c,
0x03, 0xea, 0x36, 0x59,
0x03, 0xea, 0x04, 0x00,
0x20, 0x33, 0x79, 0x7c,
0x01, 0x84, 0x5f, 0x6c,
0x06, 0xea, 0x50, 0x59,
0x20, 0x33, 0x67, 0x7c,
0x01, 0x84, 0x4d, 0x6c,
0x06, 0xea, 0x36, 0x59,
0x06, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x7c, 0x44,
0x00, 0xe2, 0x6a, 0x44,
0x01, 0x00, 0x60, 0x32,
0xee, 0x00, 0x68, 0x6c,
0xee, 0x00, 0x56, 0x6c,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x2a, 0x59,
0x33, 0xea, 0x00, 0x00,
0x80, 0x3d, 0x7a, 0x00,
0xfc, 0x42, 0x6a, 0x7c,
0xfc, 0x42, 0x58, 0x7c,
0x7f, 0x3d, 0x7a, 0x08,
0x00, 0x30, 0x45, 0x59,
0x00, 0x30, 0x2b, 0x59,
0x01, 0x30, 0x01, 0x30,
0x09, 0xea, 0x50, 0x59,
0x09, 0xea, 0x36, 0x59,
0x09, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x01, 0xa4, 0x5f, 0x6c,
0x00, 0xe2, 0x2c, 0x5c,
0x00, 0xe2, 0xde, 0x41,
0x01, 0x9c, 0x4d, 0x6c,
0x00, 0xe2, 0x1a, 0x5c,
0x20, 0x33, 0x67, 0x02,
0x01, 0x00, 0x60, 0x32,
0x02, 0xa6, 0x84, 0x7c,
0x00, 0xe2, 0x48, 0x5c,
0x00, 0xe2, 0x70, 0x58,
0x00, 0xe2, 0x80, 0x58,
0x02, 0xa6, 0x72, 0x7c,
0x00, 0xe2, 0x36, 0x5c,
0x00, 0xe2, 0x56, 0x58,
0x00, 0xe2, 0x66, 0x58,
0x00, 0xe2, 0x3a, 0x58,
0x00, 0x30, 0x45, 0x59,
0x00, 0x30, 0x2b, 0x59,
0x01, 0x30, 0x01, 0x30,
0x20, 0x19, 0x84, 0x6c,
0x00, 0xe2, 0xb4, 0x5c,
0x04, 0x19, 0x9e, 0x6c,
0x20, 0x19, 0x72, 0x6c,
0x00, 0xe2, 0xa2, 0x5c,
0x04, 0x19, 0x8c, 0x6c,
0x02, 0x19, 0x32, 0x00,
0x01, 0x84, 0x9f, 0x7c,
0x01, 0x1b, 0x98, 0x7c,
0x01, 0x1a, 0x9e, 0x6c,
0x00, 0xe2, 0x4e, 0x44,
0x80, 0x4b, 0xa4, 0x6c,
0x01, 0x4c, 0xa0, 0x7c,
0x03, 0x42, 0x4e, 0x6c,
0x00, 0xe2, 0xd4, 0x5b,
0x01, 0x84, 0x8d, 0x7c,
0x01, 0x1b, 0x86, 0x7c,
0x01, 0x1a, 0x8c, 0x6c,
0x00, 0xe2, 0x3c, 0x44,
0x80, 0x4b, 0x92, 0x6c,
0x01, 0x4c, 0x8e, 0x7c,
0x03, 0x42, 0x3c, 0x6c,
0x00, 0xe2, 0xc2, 0x5b,
0x80, 0xf9, 0xf2, 0x01,
0x04, 0x33, 0xf9, 0x79,
0x00, 0xe2, 0xf8, 0x41,
0x08, 0x5d, 0xbc, 0x6c,
0x00, 0xe2, 0x70, 0x58,
0x00, 0x30, 0x45, 0x59,
0x04, 0x33, 0xdf, 0x79,
0x00, 0xe2, 0xde, 0x41,
0x08, 0x5d, 0xaa, 0x6c,
0x00, 0xe2, 0x56, 0x58,
0x00, 0x30, 0x2b, 0x59,
0x01, 0x30, 0x01, 0x30,
0x02, 0x1b, 0xac, 0x7c,
0x08, 0x5d, 0xba, 0x7c,
0x02, 0x1b, 0x9a, 0x7c,
0x08, 0x5d, 0xa8, 0x7c,
0x03, 0x68, 0x00, 0x37,
0x01, 0x84, 0x09, 0x07,
0x80, 0x1b, 0xc6, 0x7c,
0x80, 0x84, 0xc7, 0x6c,
0x80, 0x1b, 0xb4, 0x7c,
0x80, 0x84, 0xb5, 0x6c,
0xff, 0x85, 0x0b, 0x1b,
0xff, 0x86, 0x0d, 0x23,
0xff, 0x87, 0x0f, 0x23,
0xf8, 0x1b, 0x08, 0x0b,
0xff, 0xea, 0x4e, 0x09,
0x04, 0x1b, 0xce, 0x7c,
0x04, 0x1b, 0xbc, 0x7c,
0x01, 0xa7, 0x4e, 0x01,
0xff, 0xea, 0x06, 0x0b,
0x03, 0x68, 0x00, 0x37,
0x00, 0xe2, 0xc0, 0x58,
0x00, 0xe2, 0xa6, 0x58,
0x10, 0xea, 0x18, 0x00,
0xf9, 0xd9, 0xb2, 0x0d,
0x01, 0xd9, 0xb2, 0x05,
0x01, 0x52, 0x48, 0x31,
0x20, 0xa4, 0xf2, 0x7c,
0x20, 0x5b, 0xf2, 0x7c,
0x80, 0xf9, 0x00, 0x7d,
0x20, 0xa4, 0xe0, 0x7c,
0x20, 0x5b, 0xe0, 0x7c,
0x80, 0xf9, 0xee, 0x7c,
0x11, 0x00, 0x00, 0x10,
0x04, 0x19, 0xec, 0x7c,
0x04, 0x19, 0xda, 0x7c,
0xdf, 0x19, 0x32, 0x08,
0x01, 0x4c, 0xe8, 0x7c,
0x01, 0x4c, 0xd6, 0x7c,
0x20, 0x19, 0x32, 0x00,
0x11, 0x00, 0x00, 0x10,
0x02, 0xea, 0xb4, 0x00,
0x01, 0xd9, 0xb2, 0x05,
0x10, 0x5b, 0x04, 0x6d,
0x08, 0x5b, 0x0c, 0x6d,
0x20, 0x5b, 0xfe, 0x6c,
0x02, 0x5b, 0x2c, 0x6d,
0x0e, 0xea, 0x50, 0x59,
0x10, 0x5b, 0xf2, 0x6c,
0x08, 0x5b, 0xfc, 0x6c,
0x20, 0x5b, 0xec, 0x6c,
0x02, 0x5b, 0x1c, 0x6d,
0x0e, 0xea, 0x36, 0x59,
0x0e, 0xea, 0x04, 0x00,
0x80, 0xf9, 0xee, 0x6c,
0x80, 0xf9, 0xdc, 0x6c,
0xdf, 0x5c, 0xb8, 0x08,
0x01, 0xd9, 0xb2, 0x05,
0x01, 0xa4, 0xff, 0x6d,
0x00, 0xe2, 0x2c, 0x5c,
0x00, 0xe2, 0x36, 0x5d,
0x01, 0xae, 0x5d, 0x1b,
0x01, 0x9c, 0xd7, 0x6d,
0x00, 0xe2, 0x1a, 0x5c,
0x00, 0xe2, 0x26, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x00, 0xe2, 0x2e, 0x5b,
0xf3, 0x92, 0xd5, 0x19,
0x00, 0xe2, 0x1a, 0x55,
0x80, 0x92, 0x1b, 0x6d,
0x0f, 0xea, 0x50, 0x59,
0x00, 0xe2, 0x14, 0x5b,
0xf3, 0xac, 0xd5, 0x19,
0x00, 0xe2, 0x0a, 0x55,
0x80, 0xac, 0x0b, 0x6d,
0x0f, 0xea, 0x36, 0x59,
0x0f, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x22, 0x45,
0x00, 0xe2, 0x12, 0x45,
0x04, 0x8c, 0xe1, 0x30,
0x01, 0xea, 0xf2, 0x00,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
0xff, 0x93, 0x29, 0x7d,
0x14, 0xea, 0x50, 0x59,
0xff, 0xad, 0x19, 0x7d,
0x14, 0xea, 0x36, 0x59,
0x14, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xb0, 0x5d,
0x00, 0xe2, 0x88, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
0x00, 0xe2, 0xd8, 0x5d,
0x00, 0xe2, 0x80, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x02, 0xa8, 0xf4, 0x31,
0x02, 0xa6, 0x48, 0x7d,
0x00, 0xe2, 0x3e, 0x59,
0x20, 0x5b, 0x56, 0x6d,
0xfc, 0x42, 0x42, 0x7d,
0x10, 0x40, 0x44, 0x6d,
0x20, 0x4d, 0x46, 0x7d,
0x08, 0x5d, 0x56, 0x6d,
0x02, 0xa6, 0xda, 0x6b,
0x00, 0xe2, 0x3e, 0x59,
0x20, 0x5b, 0x56, 0x6d,
0x01, 0x1b, 0x76, 0x6d,
0xfc, 0x42, 0x52, 0x7d,
0x10, 0x40, 0x54, 0x6d,
0x20, 0x4d, 0x96, 0x7d,
0x08, 0x5d, 0x96, 0x7d,
0x02, 0xa6, 0x36, 0x7d,
0x00, 0xe2, 0x24, 0x59,
0x20, 0x5b, 0x44, 0x6d,
0xfc, 0x42, 0x30, 0x7d,
0x10, 0x40, 0x32, 0x6d,
0x20, 0x4d, 0x34, 0x7d,
0x08, 0x5d, 0x44, 0x6d,
0x02, 0xa6, 0xc8, 0x6b,
0x00, 0xe2, 0x24, 0x59,
0x20, 0x5b, 0x44, 0x6d,
0x01, 0x1b, 0x64, 0x6d,
0xfc, 0x42, 0x40, 0x7d,
0x10, 0x40, 0x42, 0x6d,
0x20, 0x4d, 0x64, 0x78,
0x08, 0x5d, 0x64, 0x78,
0x02, 0x19, 0x32, 0x00,
0x01, 0x5b, 0x40, 0x31,
0x00, 0xe2, 0xb4, 0x5c,
0x00, 0xe2, 0x92, 0x5b,
0x00, 0xe2, 0xa2, 0x5c,
0x00, 0xe2, 0x80, 0x5b,
0x20, 0xea, 0xb6, 0x00,
0x00, 0xe2, 0xd4, 0x5b,
0x00, 0xe2, 0xc2, 0x5b,
0x20, 0x5c, 0xb8, 0x00,
0x04, 0x19, 0x6c, 0x6d,
0x01, 0x1a, 0x6c, 0x6d,
0x00, 0xe2, 0x3e, 0x59,
0x01, 0x1a, 0x96, 0x7d,
0x04, 0x19, 0x5a, 0x6d,
0x01, 0x1a, 0x5a, 0x6d,
0x00, 0xe2, 0x24, 0x59,
0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0x20, 0xa0, 0xe8, 0x7d,
0x08, 0xa8, 0x75, 0x7d,
0x00, 0xe2, 0x88, 0x45,
0x20, 0xa0, 0xbe, 0x7d,
0xff, 0xae, 0x5d, 0x1b,
0x08, 0xa8, 0x25, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x02, 0x19, 0x32, 0x00,
0x08, 0xa8, 0x99, 0x7d,
0x04, 0x5d, 0xfe, 0x7d,
0x01, 0x1a, 0xfe, 0x7d,
0x01, 0xa4, 0x49, 0x03,
0x01, 0x9c, 0x39, 0x03,
0x40, 0x5b, 0x74, 0x6d,
0x00, 0xe2, 0x24, 0x59,
0x40, 0x5b, 0x74, 0x6d,
0x04, 0x5d, 0xd6, 0x7d,
0x01, 0x1a, 0xd6, 0x7d,
0x20, 0x4d, 0x64, 0x78,
0x40, 0x5b, 0xbe, 0x7d,
0x04, 0x5d, 0xd6, 0x7d,
0x01, 0x1a, 0xd6, 0x7d,
0x80, 0xf9, 0xf2, 0x01,
0x02, 0xa8, 0x84, 0x32,
0x02, 0xea, 0xb4, 0x00,
0x00, 0xe2, 0x3e, 0x43,
0x02, 0xa8, 0x84, 0x32,
0x02, 0xea, 0xb4, 0x00,
0xff, 0xea, 0xd4, 0x19,
0x00, 0xe2, 0x4a, 0x59,
0x11, 0x00, 0x00, 0x10,
0x00, 0xe2, 0xcc, 0x5d,
0x00, 0xe2, 0x3e, 0x53,
0xff, 0xea, 0xd4, 0x0d,
0x00, 0xe2, 0x3e, 0x59,
0x40, 0x5b, 0xa4, 0x6d,
0x04, 0x5d, 0xfe, 0x7d,
0x01, 0x1a, 0xfe, 0x7d,
0x20, 0x4d, 0x96, 0x7d,
0x40, 0x5b, 0xe8, 0x7d,
0x04, 0x5d, 0xfe, 0x7d,
0x01, 0x1a, 0xfe, 0x7d,
0xff, 0xae, 0x5d, 0x1b,
0x08, 0xa8, 0x25, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x00, 0xe2, 0x24, 0x59,
0x01, 0x1b, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0x01, 0xa4, 0x49, 0x03,
0x08, 0xa8, 0x89, 0x6d,
0x02, 0xea, 0xb4, 0x04,
0x00, 0xe2, 0x3c, 0x59,
0x01, 0x1b, 0xc0, 0x7d,
0x40, 0x5b, 0x96, 0x7d,
0x00, 0xe2, 0x24, 0x59,
0x01, 0x1b, 0x9c, 0x6d,
0x40, 0x5b, 0xaa, 0x7d,
0x01, 0x1b, 0x9c, 0x6d,
0x02, 0x19, 0x32, 0x00,
0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xea, 0x10, 0x03,
0x08, 0xa8, 0x51, 0x03,
0x00, 0xe2, 0x88, 0x45,
0xff, 0x6a, 0xc6, 0x6d,
0x40, 0x5b, 0x96, 0x7d,
0xff, 0x6a, 0xb6, 0x7d,
0x10, 0xea, 0x50, 0x59,
0x00, 0xe2, 0x24, 0x43,
0x01, 0x1a, 0xa6, 0x7d,
0x40, 0x5b, 0xa2, 0x7d,
0x01, 0x1a, 0x90, 0x6d,
0xfc, 0x42, 0x64, 0x78,
0x01, 0x1a, 0xaa, 0x6d,
0x10, 0xea, 0x36, 0x59,
0x10, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xb6, 0x45,
0x80, 0xf9, 0x96, 0x6d,
0x01, 0x43, 0xc1, 0x31,
0x00, 0xfb, 0x96, 0x65,
0x01, 0x42, 0xc1, 0x31,
0x00, 0xfa, 0x96, 0x65,
0x01, 0xe8, 0xd4, 0x1d,
0x00, 0xe2, 0x3c, 0x59,
0x01, 0x1b, 0x96, 0x7d,
0x80, 0xf9, 0xf2, 0x01,
0x02, 0xea, 0xb4, 0x04,
0xfc, 0x42, 0x64, 0x78,
0x10, 0x40, 0xb0, 0x6d,
0x20, 0x4d, 0x64, 0x78,
0x40, 0x5b, 0x90, 0x6d,
0x01, 0x1a, 0x64, 0x78,
0x01, 0xae, 0x5d, 0x1b,
0x30, 0x3f, 0xc0, 0x09,
0x30, 0xe0, 0x96, 0x65,
0x40, 0x4b, 0x96, 0x6d,
0x30, 0xe0, 0x64, 0x60,
0x40, 0x4b, 0x64, 0x68,
0xff, 0xea, 0x52, 0x01,
0xee, 0x00, 0xee, 0x6d,
0xee, 0x00, 0xc4, 0x6d,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xae, 0x5d, 0x1b,
0x02, 0xea, 0xb4, 0x00,
0x20, 0xea, 0x9a, 0x00,
0xf3, 0x42, 0xf8, 0x6d,
0x12, 0xea, 0x50, 0x59,
0xf3, 0x42, 0xd0, 0x6d,
0x12, 0xea, 0x36, 0x59,
0x12, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x0d, 0xea, 0x50, 0x59,
0x00, 0xe2, 0xde, 0x41,
0x0d, 0xea, 0x36, 0x59,
0x0d, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x11, 0xea, 0x50, 0x59,
0x00, 0xe2, 0xde, 0x41,
0x11, 0xea, 0x36, 0x59,
0x11, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x2e, 0x5b,
0x00, 0xe2, 0x14, 0x5b,
0x08, 0x5a, 0xb4, 0x00,
0x00, 0xe2, 0x22, 0x5e,
0x00, 0xe2, 0xfc, 0x5d,
0xa8, 0xea, 0x32, 0x00,
0x00, 0xe2, 0x3e, 0x59,
0x80, 0x1a, 0x12, 0x7e,
0x00, 0xe2, 0x22, 0x5e,
0x00, 0xe2, 0x24, 0x59,
0x80, 0x1a, 0xea, 0x7d,
0x00, 0xe2, 0xfc, 0x5d,
0x80, 0x19, 0x32, 0x00,
0x40, 0x5b, 0x18, 0x6e,
0x08, 0x5a, 0x18, 0x7e,
0x20, 0x4d, 0x96, 0x7d,
0x40, 0x5b, 0xf0, 0x6d,
0x08, 0x5a, 0xf0, 0x7d,
0x20, 0x4d, 0x64, 0x78,
0x02, 0x84, 0x09, 0x03,
0x40, 0x5b, 0xe8, 0x7d,
0x08, 0xa8, 0x81, 0x6d,
0x40, 0x5b, 0xbe, 0x7d,
0xff, 0xae, 0x5d, 0x1b,
0x08, 0xa8, 0x25, 0x6b,
0x80, 0xf9, 0xf2, 0x01,
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,
......@@ -1000,124 +981,115 @@ static struct patch {
{ ahd_patch0_func, 30, 1, 1 },
{ ahd_patch1_func, 37, 1, 2 },
{ ahd_patch0_func, 38, 1, 1 },
{ ahd_patch2_func, 45, 1, 2 },
{ ahd_patch0_func, 46, 1, 1 },
{ ahd_patch2_func, 49, 1, 2 },
{ ahd_patch0_func, 50, 1, 1 },
{ ahd_patch2_func, 53, 1, 2 },
{ ahd_patch0_func, 54, 1, 1 },
{ ahd_patch2_func, 56, 1, 2 },
{ ahd_patch0_func, 57, 1, 1 },
{ ahd_patch2_func, 60, 1, 2 },
{ ahd_patch0_func, 61, 1, 1 },
{ ahd_patch2_func, 64, 1, 2 },
{ ahd_patch0_func, 65, 1, 1 },
{ ahd_patch2_func, 162, 6, 1 },
{ ahd_patch1_func, 168, 2, 1 },
{ ahd_patch4_func, 170, 1, 1 },
{ ahd_patch2_func, 179, 1, 2 },
{ ahd_patch0_func, 180, 1, 1 },
{ ahd_patch5_func, 181, 2, 2 },
{ ahd_patch0_func, 183, 6, 3 },
{ ahd_patch2_func, 186, 1, 2 },
{ ahd_patch0_func, 187, 1, 1 },
{ ahd_patch2_func, 190, 1, 2 },
{ ahd_patch0_func, 191, 1, 1 },
{ ahd_patch6_func, 193, 2, 1 },
{ ahd_patch4_func, 201, 16, 2 },
{ ahd_patch0_func, 217, 1, 1 },
{ ahd_patch7_func, 237, 2, 1 },
{ ahd_patch1_func, 241, 1, 2 },
{ ahd_patch0_func, 242, 1, 1 },
{ ahd_patch6_func, 245, 2, 1 },
{ ahd_patch1_func, 259, 1, 2 },
{ ahd_patch0_func, 260, 1, 1 },
{ ahd_patch1_func, 263, 1, 2 },
{ ahd_patch0_func, 264, 1, 1 },
{ ahd_patch2_func, 267, 1, 2 },
{ ahd_patch0_func, 268, 1, 1 },
{ ahd_patch1_func, 323, 1, 2 },
{ 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, 149, 6, 1 },
{ ahd_patch1_func, 155, 2, 1 },
{ ahd_patch4_func, 157, 1, 1 },
{ ahd_patch2_func, 166, 1, 2 },
{ ahd_patch0_func, 167, 1, 1 },
{ ahd_patch5_func, 168, 2, 2 },
{ ahd_patch0_func, 170, 6, 3 },
{ ahd_patch2_func, 173, 1, 2 },
{ ahd_patch0_func, 174, 1, 1 },
{ ahd_patch2_func, 177, 1, 2 },
{ ahd_patch0_func, 178, 1, 1 },
{ ahd_patch6_func, 180, 2, 1 },
{ ahd_patch4_func, 188, 16, 2 },
{ ahd_patch0_func, 204, 1, 1 },
{ ahd_patch7_func, 224, 2, 1 },
{ ahd_patch1_func, 228, 1, 2 },
{ ahd_patch0_func, 229, 1, 1 },
{ ahd_patch6_func, 232, 2, 1 },
{ ahd_patch1_func, 246, 1, 2 },
{ ahd_patch0_func, 247, 1, 1 },
{ ahd_patch1_func, 250, 1, 2 },
{ ahd_patch0_func, 251, 1, 1 },
{ ahd_patch2_func, 254, 1, 2 },
{ ahd_patch0_func, 255, 1, 1 },
{ ahd_patch1_func, 310, 1, 2 },
{ ahd_patch0_func, 311, 1, 1 },
{ ahd_patch2_func, 319, 1, 2 },
{ ahd_patch0_func, 320, 1, 1 },
{ ahd_patch2_func, 323, 1, 2 },
{ ahd_patch0_func, 324, 1, 1 },
{ ahd_patch2_func, 332, 1, 2 },
{ ahd_patch0_func, 333, 1, 1 },
{ ahd_patch2_func, 336, 1, 2 },
{ ahd_patch0_func, 337, 1, 1 },
{ ahd_patch1_func, 344, 1, 2 },
{ ahd_patch0_func, 345, 1, 1 },
{ ahd_patch8_func, 364, 1, 1 },
{ ahd_patch8_func, 367, 1, 1 },
{ ahd_patch8_func, 369, 1, 1 },
{ ahd_patch8_func, 381, 1, 1 },
{ ahd_patch1_func, 391, 1, 2 },
{ ahd_patch0_func, 392, 1, 1 },
{ ahd_patch1_func, 394, 1, 2 },
{ ahd_patch0_func, 395, 1, 1 },
{ ahd_patch1_func, 403, 1, 2 },
{ ahd_patch0_func, 404, 1, 1 },
{ ahd_patch2_func, 415, 1, 2 },
{ ahd_patch0_func, 416, 1, 1 },
{ ahd_patch9_func, 444, 1, 1 },
{ ahd_patch1_func, 451, 1, 2 },
{ ahd_patch0_func, 452, 1, 1 },
{ ahd_patch2_func, 464, 1, 2 },
{ ahd_patch0_func, 465, 1, 1 },
{ ahd_patch10_func, 470, 6, 2 },
{ ahd_patch0_func, 476, 1, 1 },
{ ahd_patch11_func, 499, 1, 1 },
{ ahd_patch12_func, 508, 1, 1 },
{ ahd_patch13_func, 509, 1, 2 },
{ ahd_patch0_func, 510, 1, 1 },
{ ahd_patch14_func, 515, 1, 1 },
{ ahd_patch13_func, 516, 1, 1 },
{ ahd_patch15_func, 529, 1, 2 },
{ ahd_patch0_func, 530, 1, 1 },
{ ahd_patch1_func, 552, 1, 2 },
{ ahd_patch0_func, 553, 1, 1 },
{ ahd_patch1_func, 556, 1, 2 },
{ ahd_patch0_func, 557, 1, 1 },
{ ahd_patch2_func, 562, 1, 2 },
{ ahd_patch0_func, 563, 1, 1 },
{ ahd_patch2_func, 567, 1, 2 },
{ ahd_patch0_func, 568, 1, 1 },
{ ahd_patch1_func, 569, 1, 2 },
{ ahd_patch0_func, 570, 1, 1 },
{ ahd_patch2_func, 581, 1, 2 },
{ ahd_patch0_func, 582, 1, 1 },
{ ahd_patch16_func, 586, 1, 1 },
{ ahd_patch17_func, 591, 1, 1 },
{ ahd_patch18_func, 592, 2, 1 },
{ ahd_patch17_func, 596, 1, 2 },
{ ahd_patch0_func, 597, 1, 1 },
{ ahd_patch2_func, 600, 1, 2 },
{ ahd_patch0_func, 601, 1, 1 },
{ ahd_patch2_func, 619, 1, 2 },
{ ahd_patch0_func, 620, 1, 1 },
{ ahd_patch19_func, 621, 12, 1 },
{ ahd_patch1_func, 637, 1, 2 },
{ ahd_patch0_func, 638, 1, 1 },
{ ahd_patch19_func, 639, 1, 1 },
{ ahd_patch1_func, 331, 1, 2 },
{ ahd_patch0_func, 332, 1, 1 },
{ ahd_patch8_func, 351, 1, 1 },
{ ahd_patch8_func, 354, 1, 1 },
{ ahd_patch8_func, 356, 1, 1 },
{ ahd_patch8_func, 368, 1, 1 },
{ ahd_patch1_func, 378, 1, 2 },
{ ahd_patch0_func, 379, 1, 1 },
{ ahd_patch1_func, 381, 1, 2 },
{ ahd_patch0_func, 382, 1, 1 },
{ ahd_patch1_func, 390, 1, 2 },
{ ahd_patch0_func, 391, 1, 1 },
{ ahd_patch2_func, 404, 1, 2 },
{ ahd_patch0_func, 405, 1, 1 },
{ ahd_patch9_func, 435, 1, 1 },
{ ahd_patch1_func, 442, 1, 2 },
{ ahd_patch0_func, 443, 1, 1 },
{ ahd_patch2_func, 455, 1, 2 },
{ ahd_patch0_func, 456, 1, 1 },
{ ahd_patch10_func, 461, 6, 2 },
{ ahd_patch0_func, 467, 1, 1 },
{ ahd_patch11_func, 490, 1, 1 },
{ ahd_patch12_func, 499, 1, 1 },
{ ahd_patch13_func, 500, 1, 2 },
{ ahd_patch0_func, 501, 1, 1 },
{ ahd_patch14_func, 506, 1, 1 },
{ ahd_patch13_func, 507, 1, 1 },
{ ahd_patch15_func, 520, 1, 2 },
{ ahd_patch0_func, 521, 1, 1 },
{ ahd_patch1_func, 543, 1, 2 },
{ ahd_patch0_func, 544, 1, 1 },
{ ahd_patch1_func, 547, 1, 2 },
{ ahd_patch0_func, 548, 1, 1 },
{ ahd_patch2_func, 553, 1, 2 },
{ ahd_patch0_func, 554, 1, 1 },
{ ahd_patch2_func, 558, 1, 2 },
{ ahd_patch0_func, 559, 1, 1 },
{ ahd_patch1_func, 560, 1, 2 },
{ ahd_patch0_func, 561, 1, 1 },
{ ahd_patch2_func, 572, 1, 2 },
{ ahd_patch0_func, 573, 1, 1 },
{ ahd_patch16_func, 577, 1, 1 },
{ ahd_patch17_func, 582, 1, 1 },
{ ahd_patch18_func, 583, 2, 1 },
{ ahd_patch17_func, 587, 1, 2 },
{ ahd_patch0_func, 588, 1, 1 },
{ ahd_patch2_func, 591, 1, 2 },
{ ahd_patch0_func, 592, 1, 1 },
{ ahd_patch2_func, 610, 1, 2 },
{ ahd_patch0_func, 611, 1, 1 },
{ ahd_patch19_func, 612, 12, 1 },
{ ahd_patch1_func, 628, 1, 2 },
{ ahd_patch0_func, 629, 1, 1 },
{ ahd_patch19_func, 630, 1, 1 },
{ ahd_patch1_func, 642, 1, 2 },
{ ahd_patch0_func, 643, 1, 1 },
{ ahd_patch1_func, 650, 1, 2 },
{ ahd_patch0_func, 651, 1, 1 },
{ ahd_patch1_func, 658, 1, 2 },
{ ahd_patch0_func, 659, 1, 1 },
{ ahd_patch16_func, 683, 1, 1 },
{ ahd_patch16_func, 699, 1, 1 },
{ ahd_patch2_func, 711, 1, 2 },
{ ahd_patch0_func, 712, 1, 1 },
{ ahd_patch16_func, 731, 1, 1 },
{ ahd_patch1_func, 739, 1, 2 },
{ ahd_patch0_func, 740, 1, 1 },
{ ahd_patch1_func, 761, 1, 2 },
{ ahd_patch0_func, 762, 1, 1 },
{ ahd_patch1_func, 764, 1, 2 },
{ ahd_patch0_func, 765, 1, 1 },
{ ahd_patch1_func, 767, 1, 2 },
{ ahd_patch0_func, 768, 1, 1 },
{ ahd_patch20_func, 770, 1, 2 },
{ ahd_patch0_func, 771, 2, 1 },
{ ahd_patch21_func, 774, 4, 2 },
{ ahd_patch0_func, 778, 1, 1 },
{ ahd_patch21_func, 785, 11, 1 }
{ ahd_patch16_func, 674, 1, 1 },
{ ahd_patch16_func, 712, 1, 1 },
{ ahd_patch1_func, 723, 1, 2 },
{ ahd_patch0_func, 724, 1, 1 },
{ ahd_patch1_func, 741, 1, 2 },
{ ahd_patch0_func, 742, 1, 1 },
{ ahd_patch1_func, 744, 1, 2 },
{ ahd_patch0_func, 745, 1, 1 },
{ ahd_patch1_func, 747, 1, 2 },
{ ahd_patch0_func, 748, 1, 1 },
{ ahd_patch20_func, 750, 1, 2 },
{ ahd_patch0_func, 751, 2, 1 },
{ ahd_patch21_func, 754, 4, 2 },
{ ahd_patch0_func, 758, 1, 1 },
{ ahd_patch21_func, 766, 11, 1 }
};
static struct cs {
......@@ -1127,18 +1099,15 @@ static struct cs {
{ 11, 12 },
{ 13, 14 },
{ 29, 42 },
{ 43, 56 },
{ 69, 72 },
{ 99, 124 },
{ 125, 156 },
{ 158, 162 },
{ 170, 178 },
{ 201, 250 },
{ 683, 699 },
{ 699, 717 },
{ 722, 728 },
{ 731, 736 },
{ 742, 748 }
{ 56, 59 },
{ 86, 112 },
{ 113, 144 },
{ 146, 149 },
{ 157, 165 },
{ 188, 237 },
{ 674, 690 },
{ 690, 704 },
{ 714, 718 }
};
static const int num_critical_sections = sizeof(critical_sections)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment