1*4882a593Smuzhiyun/* DO NOT EDIT - Generated automatically by script_asm.pl */ 2*4882a593Smuzhiyunstatic u32 SCRIPT[] = { 3*4882a593Smuzhiyun/* 4*4882a593Smuzhiyun; Script for the NCR (or symbios) 53c700 and 53c700-66 chip 5*4882a593Smuzhiyun; 6*4882a593Smuzhiyun; Copyright (C) 2001 James.Bottomley@HansenPartnership.com 7*4882a593Smuzhiyun;;----------------------------------------------------------------------------- 8*4882a593Smuzhiyun;; 9*4882a593Smuzhiyun;; This program is free software; you can redistribute it and/or modify 10*4882a593Smuzhiyun;; it under the terms of the GNU General Public License as published by 11*4882a593Smuzhiyun;; the Free Software Foundation; either version 2 of the License, or 12*4882a593Smuzhiyun;; (at your option) any later version. 13*4882a593Smuzhiyun;; 14*4882a593Smuzhiyun;; This program is distributed in the hope that it will be useful, 15*4882a593Smuzhiyun;; but WITHOUT ANY WARRANTY; without even the implied warranty of 16*4882a593Smuzhiyun;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*4882a593Smuzhiyun;; GNU General Public License for more details. 18*4882a593Smuzhiyun;; 19*4882a593Smuzhiyun;; You should have received a copy of the GNU General Public License 20*4882a593Smuzhiyun;; along with this program; if not, write to the Free Software 21*4882a593Smuzhiyun;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22*4882a593Smuzhiyun;; 23*4882a593Smuzhiyun;;----------------------------------------------------------------------------- 24*4882a593Smuzhiyun; 25*4882a593Smuzhiyun; This script is designed to be modified for the particular command in 26*4882a593Smuzhiyun; operation. The particular variables pertaining to the commands are: 27*4882a593Smuzhiyun; 28*4882a593SmuzhiyunABSOLUTE Device_ID = 0 ; ID of target for command 29*4882a593SmuzhiyunABSOLUTE MessageCount = 0 ; Number of bytes in message 30*4882a593SmuzhiyunABSOLUTE MessageLocation = 0 ; Addr of message 31*4882a593SmuzhiyunABSOLUTE CommandCount = 0 ; Number of bytes in command 32*4882a593SmuzhiyunABSOLUTE CommandAddress = 0 ; Addr of Command 33*4882a593SmuzhiyunABSOLUTE StatusAddress = 0 ; Addr to receive status return 34*4882a593SmuzhiyunABSOLUTE ReceiveMsgAddress = 0 ; Addr to receive msg 35*4882a593Smuzhiyun; 36*4882a593Smuzhiyun; This is the magic component for handling scatter-gather. Each of the 37*4882a593Smuzhiyun; SG components is preceded by a script fragment which moves the 38*4882a593Smuzhiyun; necessary amount of data and jumps to the next SG segment. The final 39*4882a593Smuzhiyun; SG segment jumps back to . However, this address is the first SG script 40*4882a593Smuzhiyun; segment. 41*4882a593Smuzhiyun; 42*4882a593SmuzhiyunABSOLUTE SGScriptStartAddress = 0 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun; The following represent status interrupts we use 3 hex digits for 45*4882a593Smuzhiyun; this: 0xPRS where 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun; P: 48*4882a593SmuzhiyunABSOLUTE AFTER_SELECTION = 0x100 49*4882a593SmuzhiyunABSOLUTE BEFORE_CMD = 0x200 50*4882a593SmuzhiyunABSOLUTE AFTER_CMD = 0x300 51*4882a593SmuzhiyunABSOLUTE AFTER_STATUS = 0x400 52*4882a593SmuzhiyunABSOLUTE AFTER_DATA_IN = 0x500 53*4882a593SmuzhiyunABSOLUTE AFTER_DATA_OUT = 0x600 54*4882a593SmuzhiyunABSOLUTE DURING_DATA_IN = 0x700 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun; R: 57*4882a593SmuzhiyunABSOLUTE NOT_MSG_OUT = 0x10 58*4882a593SmuzhiyunABSOLUTE UNEXPECTED_PHASE = 0x20 59*4882a593SmuzhiyunABSOLUTE NOT_MSG_IN = 0x30 60*4882a593SmuzhiyunABSOLUTE UNEXPECTED_MSG = 0x40 61*4882a593SmuzhiyunABSOLUTE MSG_IN = 0x50 62*4882a593SmuzhiyunABSOLUTE SDTR_MSG_R = 0x60 63*4882a593SmuzhiyunABSOLUTE REJECT_MSG_R = 0x70 64*4882a593SmuzhiyunABSOLUTE DISCONNECT = 0x80 65*4882a593SmuzhiyunABSOLUTE MSG_OUT = 0x90 66*4882a593SmuzhiyunABSOLUTE WDTR_MSG_R = 0xA0 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun; S: 69*4882a593SmuzhiyunABSOLUTE GOOD_STATUS = 0x1 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun; Combinations, since the script assembler can't process | 72*4882a593SmuzhiyunABSOLUTE NOT_MSG_OUT_AFTER_SELECTION = 0x110 73*4882a593SmuzhiyunABSOLUTE UNEXPECTED_PHASE_BEFORE_CMD = 0x220 74*4882a593SmuzhiyunABSOLUTE UNEXPECTED_PHASE_AFTER_CMD = 0x320 75*4882a593SmuzhiyunABSOLUTE NOT_MSG_IN_AFTER_STATUS = 0x430 76*4882a593SmuzhiyunABSOLUTE GOOD_STATUS_AFTER_STATUS = 0x401 77*4882a593SmuzhiyunABSOLUTE UNEXPECTED_PHASE_AFTER_DATA_IN = 0x520 78*4882a593SmuzhiyunABSOLUTE UNEXPECTED_PHASE_AFTER_DATA_OUT = 0x620 79*4882a593SmuzhiyunABSOLUTE UNEXPECTED_MSG_BEFORE_CMD = 0x240 80*4882a593SmuzhiyunABSOLUTE MSG_IN_BEFORE_CMD = 0x250 81*4882a593SmuzhiyunABSOLUTE MSG_IN_AFTER_CMD = 0x350 82*4882a593SmuzhiyunABSOLUTE SDTR_MSG_BEFORE_CMD = 0x260 83*4882a593SmuzhiyunABSOLUTE REJECT_MSG_BEFORE_CMD = 0x270 84*4882a593SmuzhiyunABSOLUTE DISCONNECT_AFTER_CMD = 0x380 85*4882a593SmuzhiyunABSOLUTE SDTR_MSG_AFTER_CMD = 0x360 86*4882a593SmuzhiyunABSOLUTE WDTR_MSG_AFTER_CMD = 0x3A0 87*4882a593SmuzhiyunABSOLUTE MSG_IN_AFTER_STATUS = 0x440 88*4882a593SmuzhiyunABSOLUTE DISCONNECT_AFTER_DATA = 0x580 89*4882a593SmuzhiyunABSOLUTE MSG_IN_AFTER_DATA_IN = 0x550 90*4882a593SmuzhiyunABSOLUTE MSG_IN_AFTER_DATA_OUT = 0x650 91*4882a593SmuzhiyunABSOLUTE MSG_OUT_AFTER_DATA_IN = 0x590 92*4882a593SmuzhiyunABSOLUTE DATA_IN_AFTER_DATA_IN = 0x5a0 93*4882a593SmuzhiyunABSOLUTE MSG_IN_DURING_DATA_IN = 0x750 94*4882a593SmuzhiyunABSOLUTE DISCONNECT_DURING_DATA = 0x780 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun; 97*4882a593Smuzhiyun; Other interrupt conditions 98*4882a593Smuzhiyun; 99*4882a593SmuzhiyunABSOLUTE RESELECTED_DURING_SELECTION = 0x1000 100*4882a593SmuzhiyunABSOLUTE COMPLETED_SELECTION_AS_TARGET = 0x1001 101*4882a593SmuzhiyunABSOLUTE RESELECTION_IDENTIFIED = 0x1003 102*4882a593Smuzhiyun; 103*4882a593Smuzhiyun; Fatal interrupt conditions. If you add to this, also add to the 104*4882a593Smuzhiyun; array of corresponding messages 105*4882a593Smuzhiyun; 106*4882a593SmuzhiyunABSOLUTE FATAL = 0x2000 107*4882a593SmuzhiyunABSOLUTE FATAL_UNEXPECTED_RESELECTION_MSG = 0x2000 108*4882a593SmuzhiyunABSOLUTE FATAL_SEND_MSG = 0x2001 109*4882a593SmuzhiyunABSOLUTE FATAL_NOT_MSG_IN_AFTER_SELECTION = 0x2002 110*4882a593SmuzhiyunABSOLUTE FATAL_ILLEGAL_MSG_LENGTH = 0x2003 111*4882a593Smuzhiyun 112*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT = 0x3000 113*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT1 = 0x3001 114*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT2 = 0x3002 115*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT3 = 0x3003 116*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT4 = 0x3004 117*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT5 = 0x3005 118*4882a593SmuzhiyunABSOLUTE DEBUG_INTERRUPT6 = 0x3006 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun; 122*4882a593Smuzhiyun; SCSI Messages we interpret in the script 123*4882a593Smuzhiyun; 124*4882a593SmuzhiyunABSOLUTE COMMAND_COMPLETE_MSG = 0x00 125*4882a593SmuzhiyunABSOLUTE EXTENDED_MSG = 0x01 126*4882a593SmuzhiyunABSOLUTE SDTR_MSG = 0x01 127*4882a593SmuzhiyunABSOLUTE SAVE_DATA_PTRS_MSG = 0x02 128*4882a593SmuzhiyunABSOLUTE RESTORE_DATA_PTRS_MSG = 0x03 129*4882a593SmuzhiyunABSOLUTE WDTR_MSG = 0x03 130*4882a593SmuzhiyunABSOLUTE DISCONNECT_MSG = 0x04 131*4882a593SmuzhiyunABSOLUTE REJECT_MSG = 0x07 132*4882a593SmuzhiyunABSOLUTE PARITY_ERROR_MSG = 0x09 133*4882a593SmuzhiyunABSOLUTE SIMPLE_TAG_MSG = 0x20 134*4882a593SmuzhiyunABSOLUTE IDENTIFY_MSG = 0x80 135*4882a593SmuzhiyunABSOLUTE IDENTIFY_MSG_MASK = 0x7F 136*4882a593SmuzhiyunABSOLUTE TWO_BYTE_MSG = 0x20 137*4882a593SmuzhiyunABSOLUTE TWO_BYTE_MSG_MASK = 0x0F 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun; This is where the script begins 140*4882a593Smuzhiyun 141*4882a593SmuzhiyunENTRY StartUp 142*4882a593Smuzhiyun 143*4882a593SmuzhiyunStartUp: 144*4882a593Smuzhiyun SELECT ATN Device_ID, Reselect 145*4882a593Smuzhiyun 146*4882a593Smuzhiyunat 0x00000000 : */ 0x41000000,0x00000020, 147*4882a593Smuzhiyun/* 148*4882a593Smuzhiyun JUMP Finish, WHEN STATUS 149*4882a593Smuzhiyun 150*4882a593Smuzhiyunat 0x00000002 : */ 0x830b0000,0x00000460, 151*4882a593Smuzhiyun/* 152*4882a593Smuzhiyun JUMP SendIdentifyMsg, IF MSG_OUT 153*4882a593Smuzhiyun 154*4882a593Smuzhiyunat 0x00000004 : */ 0x860a0000,0x000001b0, 155*4882a593Smuzhiyun/* 156*4882a593Smuzhiyun INT NOT_MSG_OUT_AFTER_SELECTION 157*4882a593Smuzhiyun 158*4882a593Smuzhiyunat 0x00000006 : */ 0x98080000,0x00000110, 159*4882a593Smuzhiyun/* 160*4882a593Smuzhiyun 161*4882a593SmuzhiyunReselect: 162*4882a593Smuzhiyun WAIT RESELECT SelectedAsTarget 163*4882a593Smuzhiyun 164*4882a593Smuzhiyunat 0x00000008 : */ 0x50000000,0x00000058, 165*4882a593Smuzhiyun/* 166*4882a593Smuzhiyun INT RESELECTED_DURING_SELECTION, WHEN MSG_IN 167*4882a593Smuzhiyun 168*4882a593Smuzhiyunat 0x0000000a : */ 0x9f0b0000,0x00001000, 169*4882a593Smuzhiyun/* 170*4882a593Smuzhiyun INT FATAL_NOT_MSG_IN_AFTER_SELECTION 171*4882a593Smuzhiyun 172*4882a593Smuzhiyunat 0x0000000c : */ 0x98080000,0x00002002, 173*4882a593Smuzhiyun/* 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun ENTRY GetReselectionData 176*4882a593SmuzhiyunGetReselectionData: 177*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 178*4882a593Smuzhiyun 179*4882a593Smuzhiyunat 0x0000000e : */ 0x0f000001,0x00000000, 180*4882a593Smuzhiyun/* 181*4882a593Smuzhiyun INT RESELECTION_IDENTIFIED 182*4882a593Smuzhiyun 183*4882a593Smuzhiyunat 0x00000010 : */ 0x98080000,0x00001003, 184*4882a593Smuzhiyun/* 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun ENTRY GetReselectionWithTag 187*4882a593SmuzhiyunGetReselectionWithTag: 188*4882a593Smuzhiyun MOVE 3, ReceiveMsgAddress, WHEN MSG_IN 189*4882a593Smuzhiyun 190*4882a593Smuzhiyunat 0x00000012 : */ 0x0f000003,0x00000000, 191*4882a593Smuzhiyun/* 192*4882a593Smuzhiyun INT RESELECTION_IDENTIFIED 193*4882a593Smuzhiyun 194*4882a593Smuzhiyunat 0x00000014 : */ 0x98080000,0x00001003, 195*4882a593Smuzhiyun/* 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun ENTRY SelectedAsTarget 198*4882a593SmuzhiyunSelectedAsTarget: 199*4882a593Smuzhiyun; Basically tell the selecting device that there's nothing here 200*4882a593Smuzhiyun SET TARGET 201*4882a593Smuzhiyun 202*4882a593Smuzhiyunat 0x00000016 : */ 0x58000200,0x00000000, 203*4882a593Smuzhiyun/* 204*4882a593Smuzhiyun DISCONNECT 205*4882a593Smuzhiyun 206*4882a593Smuzhiyunat 0x00000018 : */ 0x48000000,0x00000000, 207*4882a593Smuzhiyun/* 208*4882a593Smuzhiyun CLEAR TARGET 209*4882a593Smuzhiyun 210*4882a593Smuzhiyunat 0x0000001a : */ 0x60000200,0x00000000, 211*4882a593Smuzhiyun/* 212*4882a593Smuzhiyun INT COMPLETED_SELECTION_AS_TARGET 213*4882a593Smuzhiyun 214*4882a593Smuzhiyunat 0x0000001c : */ 0x98080000,0x00001001, 215*4882a593Smuzhiyun/* 216*4882a593Smuzhiyun; 217*4882a593Smuzhiyun; These are the messaging entries 218*4882a593Smuzhiyun; 219*4882a593Smuzhiyun; Send a message. Message count should be correctly patched 220*4882a593Smuzhiyun ENTRY SendMessage 221*4882a593SmuzhiyunSendMessage: 222*4882a593Smuzhiyun MOVE MessageCount, MessageLocation, WHEN MSG_OUT 223*4882a593Smuzhiyun 224*4882a593Smuzhiyunat 0x0000001e : */ 0x0e000000,0x00000000, 225*4882a593Smuzhiyun/* 226*4882a593SmuzhiyunResumeSendMessage: 227*4882a593Smuzhiyun RETURN, WHEN NOT MSG_OUT 228*4882a593Smuzhiyun 229*4882a593Smuzhiyunat 0x00000020 : */ 0x96030000,0x00000000, 230*4882a593Smuzhiyun/* 231*4882a593Smuzhiyun INT FATAL_SEND_MSG 232*4882a593Smuzhiyun 233*4882a593Smuzhiyunat 0x00000022 : */ 0x98080000,0x00002001, 234*4882a593Smuzhiyun/* 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun ENTRY SendMessagePhaseMismatch 237*4882a593SmuzhiyunSendMessagePhaseMismatch: 238*4882a593Smuzhiyun CLEAR ACK 239*4882a593Smuzhiyun 240*4882a593Smuzhiyunat 0x00000024 : */ 0x60000040,0x00000000, 241*4882a593Smuzhiyun/* 242*4882a593Smuzhiyun JUMP ResumeSendMessage 243*4882a593Smuzhiyun 244*4882a593Smuzhiyunat 0x00000026 : */ 0x80080000,0x00000080, 245*4882a593Smuzhiyun/* 246*4882a593Smuzhiyun; 247*4882a593Smuzhiyun; Receive a message. Need to identify the message to 248*4882a593Smuzhiyun; receive it correctly 249*4882a593Smuzhiyun ENTRY ReceiveMessage 250*4882a593SmuzhiyunReceiveMessage: 251*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 252*4882a593Smuzhiyun 253*4882a593Smuzhiyunat 0x00000028 : */ 0x0f000001,0x00000000, 254*4882a593Smuzhiyun/* 255*4882a593Smuzhiyun; 256*4882a593Smuzhiyun; Use this entry if we've just tried to look at the first byte 257*4882a593Smuzhiyun; of the message and want to process it further 258*4882a593SmuzhiyunProcessReceiveMessage: 259*4882a593Smuzhiyun JUMP ReceiveExtendedMessage, IF EXTENDED_MSG 260*4882a593Smuzhiyun 261*4882a593Smuzhiyunat 0x0000002a : */ 0x800c0001,0x000000d0, 262*4882a593Smuzhiyun/* 263*4882a593Smuzhiyun RETURN, IF NOT TWO_BYTE_MSG, AND MASK TWO_BYTE_MSG_MASK 264*4882a593Smuzhiyun 265*4882a593Smuzhiyunat 0x0000002c : */ 0x90040f20,0x00000000, 266*4882a593Smuzhiyun/* 267*4882a593Smuzhiyun CLEAR ACK 268*4882a593Smuzhiyun 269*4882a593Smuzhiyunat 0x0000002e : */ 0x60000040,0x00000000, 270*4882a593Smuzhiyun/* 271*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress + 1, WHEN MSG_IN 272*4882a593Smuzhiyun 273*4882a593Smuzhiyunat 0x00000030 : */ 0x0f000001,0x00000001, 274*4882a593Smuzhiyun/* 275*4882a593Smuzhiyun RETURN 276*4882a593Smuzhiyun 277*4882a593Smuzhiyunat 0x00000032 : */ 0x90080000,0x00000000, 278*4882a593Smuzhiyun/* 279*4882a593SmuzhiyunReceiveExtendedMessage: 280*4882a593Smuzhiyun CLEAR ACK 281*4882a593Smuzhiyun 282*4882a593Smuzhiyunat 0x00000034 : */ 0x60000040,0x00000000, 283*4882a593Smuzhiyun/* 284*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress + 1, WHEN MSG_IN 285*4882a593Smuzhiyun 286*4882a593Smuzhiyunat 0x00000036 : */ 0x0f000001,0x00000001, 287*4882a593Smuzhiyun/* 288*4882a593Smuzhiyun JUMP Receive1Byte, IF 0x01 289*4882a593Smuzhiyun 290*4882a593Smuzhiyunat 0x00000038 : */ 0x800c0001,0x00000110, 291*4882a593Smuzhiyun/* 292*4882a593Smuzhiyun JUMP Receive2Byte, IF 0x02 293*4882a593Smuzhiyun 294*4882a593Smuzhiyunat 0x0000003a : */ 0x800c0002,0x00000128, 295*4882a593Smuzhiyun/* 296*4882a593Smuzhiyun JUMP Receive3Byte, IF 0x03 297*4882a593Smuzhiyun 298*4882a593Smuzhiyunat 0x0000003c : */ 0x800c0003,0x00000140, 299*4882a593Smuzhiyun/* 300*4882a593Smuzhiyun JUMP Receive4Byte, IF 0x04 301*4882a593Smuzhiyun 302*4882a593Smuzhiyunat 0x0000003e : */ 0x800c0004,0x00000158, 303*4882a593Smuzhiyun/* 304*4882a593Smuzhiyun JUMP Receive5Byte, IF 0x05 305*4882a593Smuzhiyun 306*4882a593Smuzhiyunat 0x00000040 : */ 0x800c0005,0x00000170, 307*4882a593Smuzhiyun/* 308*4882a593Smuzhiyun INT FATAL_ILLEGAL_MSG_LENGTH 309*4882a593Smuzhiyun 310*4882a593Smuzhiyunat 0x00000042 : */ 0x98080000,0x00002003, 311*4882a593Smuzhiyun/* 312*4882a593SmuzhiyunReceive1Byte: 313*4882a593Smuzhiyun CLEAR ACK 314*4882a593Smuzhiyun 315*4882a593Smuzhiyunat 0x00000044 : */ 0x60000040,0x00000000, 316*4882a593Smuzhiyun/* 317*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress + 2, WHEN MSG_IN 318*4882a593Smuzhiyun 319*4882a593Smuzhiyunat 0x00000046 : */ 0x0f000001,0x00000002, 320*4882a593Smuzhiyun/* 321*4882a593Smuzhiyun RETURN 322*4882a593Smuzhiyun 323*4882a593Smuzhiyunat 0x00000048 : */ 0x90080000,0x00000000, 324*4882a593Smuzhiyun/* 325*4882a593SmuzhiyunReceive2Byte: 326*4882a593Smuzhiyun CLEAR ACK 327*4882a593Smuzhiyun 328*4882a593Smuzhiyunat 0x0000004a : */ 0x60000040,0x00000000, 329*4882a593Smuzhiyun/* 330*4882a593Smuzhiyun MOVE 2, ReceiveMsgAddress + 2, WHEN MSG_IN 331*4882a593Smuzhiyun 332*4882a593Smuzhiyunat 0x0000004c : */ 0x0f000002,0x00000002, 333*4882a593Smuzhiyun/* 334*4882a593Smuzhiyun RETURN 335*4882a593Smuzhiyun 336*4882a593Smuzhiyunat 0x0000004e : */ 0x90080000,0x00000000, 337*4882a593Smuzhiyun/* 338*4882a593SmuzhiyunReceive3Byte: 339*4882a593Smuzhiyun CLEAR ACK 340*4882a593Smuzhiyun 341*4882a593Smuzhiyunat 0x00000050 : */ 0x60000040,0x00000000, 342*4882a593Smuzhiyun/* 343*4882a593Smuzhiyun MOVE 3, ReceiveMsgAddress + 2, WHEN MSG_IN 344*4882a593Smuzhiyun 345*4882a593Smuzhiyunat 0x00000052 : */ 0x0f000003,0x00000002, 346*4882a593Smuzhiyun/* 347*4882a593Smuzhiyun RETURN 348*4882a593Smuzhiyun 349*4882a593Smuzhiyunat 0x00000054 : */ 0x90080000,0x00000000, 350*4882a593Smuzhiyun/* 351*4882a593SmuzhiyunReceive4Byte: 352*4882a593Smuzhiyun CLEAR ACK 353*4882a593Smuzhiyun 354*4882a593Smuzhiyunat 0x00000056 : */ 0x60000040,0x00000000, 355*4882a593Smuzhiyun/* 356*4882a593Smuzhiyun MOVE 4, ReceiveMsgAddress + 2, WHEN MSG_IN 357*4882a593Smuzhiyun 358*4882a593Smuzhiyunat 0x00000058 : */ 0x0f000004,0x00000002, 359*4882a593Smuzhiyun/* 360*4882a593Smuzhiyun RETURN 361*4882a593Smuzhiyun 362*4882a593Smuzhiyunat 0x0000005a : */ 0x90080000,0x00000000, 363*4882a593Smuzhiyun/* 364*4882a593SmuzhiyunReceive5Byte: 365*4882a593Smuzhiyun CLEAR ACK 366*4882a593Smuzhiyun 367*4882a593Smuzhiyunat 0x0000005c : */ 0x60000040,0x00000000, 368*4882a593Smuzhiyun/* 369*4882a593Smuzhiyun MOVE 5, ReceiveMsgAddress + 2, WHEN MSG_IN 370*4882a593Smuzhiyun 371*4882a593Smuzhiyunat 0x0000005e : */ 0x0f000005,0x00000002, 372*4882a593Smuzhiyun/* 373*4882a593Smuzhiyun RETURN 374*4882a593Smuzhiyun 375*4882a593Smuzhiyunat 0x00000060 : */ 0x90080000,0x00000000, 376*4882a593Smuzhiyun/* 377*4882a593Smuzhiyun; 378*4882a593Smuzhiyun; Come here from the message processor to ignore the message 379*4882a593Smuzhiyun; 380*4882a593Smuzhiyun ENTRY IgnoreMessage 381*4882a593SmuzhiyunIgnoreMessage: 382*4882a593Smuzhiyun CLEAR ACK 383*4882a593Smuzhiyun 384*4882a593Smuzhiyunat 0x00000062 : */ 0x60000040,0x00000000, 385*4882a593Smuzhiyun/* 386*4882a593Smuzhiyun RETURN 387*4882a593Smuzhiyun 388*4882a593Smuzhiyunat 0x00000064 : */ 0x90080000,0x00000000, 389*4882a593Smuzhiyun/* 390*4882a593Smuzhiyun; 391*4882a593Smuzhiyun; Come here to send a reply to a message 392*4882a593Smuzhiyun; 393*4882a593Smuzhiyun ENTRY SendMessageWithATN 394*4882a593SmuzhiyunSendMessageWithATN: 395*4882a593Smuzhiyun SET ATN 396*4882a593Smuzhiyun 397*4882a593Smuzhiyunat 0x00000066 : */ 0x58000008,0x00000000, 398*4882a593Smuzhiyun/* 399*4882a593Smuzhiyun CLEAR ACK 400*4882a593Smuzhiyun 401*4882a593Smuzhiyunat 0x00000068 : */ 0x60000040,0x00000000, 402*4882a593Smuzhiyun/* 403*4882a593Smuzhiyun JUMP SendMessage 404*4882a593Smuzhiyun 405*4882a593Smuzhiyunat 0x0000006a : */ 0x80080000,0x00000078, 406*4882a593Smuzhiyun/* 407*4882a593Smuzhiyun 408*4882a593SmuzhiyunSendIdentifyMsg: 409*4882a593Smuzhiyun CALL SendMessage 410*4882a593Smuzhiyun 411*4882a593Smuzhiyunat 0x0000006c : */ 0x88080000,0x00000078, 412*4882a593Smuzhiyun/* 413*4882a593Smuzhiyun CLEAR ATN 414*4882a593Smuzhiyun 415*4882a593Smuzhiyunat 0x0000006e : */ 0x60000008,0x00000000, 416*4882a593Smuzhiyun/* 417*4882a593Smuzhiyun 418*4882a593SmuzhiyunIgnoreMsgBeforeCommand: 419*4882a593Smuzhiyun CLEAR ACK 420*4882a593Smuzhiyun 421*4882a593Smuzhiyunat 0x00000070 : */ 0x60000040,0x00000000, 422*4882a593Smuzhiyun/* 423*4882a593Smuzhiyun ENTRY SendCommand 424*4882a593SmuzhiyunSendCommand: 425*4882a593Smuzhiyun JUMP Finish, WHEN STATUS 426*4882a593Smuzhiyun 427*4882a593Smuzhiyunat 0x00000072 : */ 0x830b0000,0x00000460, 428*4882a593Smuzhiyun/* 429*4882a593Smuzhiyun JUMP MsgInBeforeCommand, IF MSG_IN 430*4882a593Smuzhiyun 431*4882a593Smuzhiyunat 0x00000074 : */ 0x870a0000,0x000002c0, 432*4882a593Smuzhiyun/* 433*4882a593Smuzhiyun INT UNEXPECTED_PHASE_BEFORE_CMD, IF NOT CMD 434*4882a593Smuzhiyun 435*4882a593Smuzhiyunat 0x00000076 : */ 0x9a020000,0x00000220, 436*4882a593Smuzhiyun/* 437*4882a593Smuzhiyun MOVE CommandCount, CommandAddress, WHEN CMD 438*4882a593Smuzhiyun 439*4882a593Smuzhiyunat 0x00000078 : */ 0x0a000000,0x00000000, 440*4882a593Smuzhiyun/* 441*4882a593SmuzhiyunResumeSendCommand: 442*4882a593Smuzhiyun JUMP Finish, WHEN STATUS 443*4882a593Smuzhiyun 444*4882a593Smuzhiyunat 0x0000007a : */ 0x830b0000,0x00000460, 445*4882a593Smuzhiyun/* 446*4882a593Smuzhiyun JUMP MsgInAfterCmd, IF MSG_IN 447*4882a593Smuzhiyun 448*4882a593Smuzhiyunat 0x0000007c : */ 0x870a0000,0x00000248, 449*4882a593Smuzhiyun/* 450*4882a593Smuzhiyun JUMP DataIn, IF DATA_IN 451*4882a593Smuzhiyun 452*4882a593Smuzhiyunat 0x0000007e : */ 0x810a0000,0x000002f8, 453*4882a593Smuzhiyun/* 454*4882a593Smuzhiyun JUMP DataOut, IF DATA_OUT 455*4882a593Smuzhiyun 456*4882a593Smuzhiyunat 0x00000080 : */ 0x800a0000,0x00000338, 457*4882a593Smuzhiyun/* 458*4882a593Smuzhiyun INT UNEXPECTED_PHASE_AFTER_CMD 459*4882a593Smuzhiyun 460*4882a593Smuzhiyunat 0x00000082 : */ 0x98080000,0x00000320, 461*4882a593Smuzhiyun/* 462*4882a593Smuzhiyun 463*4882a593SmuzhiyunIgnoreMsgDuringData: 464*4882a593Smuzhiyun CLEAR ACK 465*4882a593Smuzhiyun 466*4882a593Smuzhiyunat 0x00000084 : */ 0x60000040,0x00000000, 467*4882a593Smuzhiyun/* 468*4882a593Smuzhiyun ; fall through to MsgInDuringData 469*4882a593Smuzhiyun 470*4882a593SmuzhiyunEntry MsgInDuringData 471*4882a593SmuzhiyunMsgInDuringData: 472*4882a593Smuzhiyun; 473*4882a593Smuzhiyun; Could be we have nothing more to transfer 474*4882a593Smuzhiyun; 475*4882a593Smuzhiyun JUMP Finish, WHEN STATUS 476*4882a593Smuzhiyun 477*4882a593Smuzhiyunat 0x00000086 : */ 0x830b0000,0x00000460, 478*4882a593Smuzhiyun/* 479*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 480*4882a593Smuzhiyun 481*4882a593Smuzhiyunat 0x00000088 : */ 0x0f000001,0x00000000, 482*4882a593Smuzhiyun/* 483*4882a593Smuzhiyun JUMP DisconnectDuringDataIn, IF DISCONNECT_MSG 484*4882a593Smuzhiyun 485*4882a593Smuzhiyunat 0x0000008a : */ 0x800c0004,0x00000398, 486*4882a593Smuzhiyun/* 487*4882a593Smuzhiyun JUMP IgnoreMsgDuringData, IF SAVE_DATA_PTRS_MSG 488*4882a593Smuzhiyun 489*4882a593Smuzhiyunat 0x0000008c : */ 0x800c0002,0x00000210, 490*4882a593Smuzhiyun/* 491*4882a593Smuzhiyun JUMP IgnoreMsgDuringData, IF RESTORE_DATA_PTRS_MSG 492*4882a593Smuzhiyun 493*4882a593Smuzhiyunat 0x0000008e : */ 0x800c0003,0x00000210, 494*4882a593Smuzhiyun/* 495*4882a593Smuzhiyun INT MSG_IN_DURING_DATA_IN 496*4882a593Smuzhiyun 497*4882a593Smuzhiyunat 0x00000090 : */ 0x98080000,0x00000750, 498*4882a593Smuzhiyun/* 499*4882a593Smuzhiyun 500*4882a593SmuzhiyunMsgInAfterCmd: 501*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 502*4882a593Smuzhiyun 503*4882a593Smuzhiyunat 0x00000092 : */ 0x0f000001,0x00000000, 504*4882a593Smuzhiyun/* 505*4882a593Smuzhiyun JUMP DisconnectAfterCmd, IF DISCONNECT_MSG 506*4882a593Smuzhiyun 507*4882a593Smuzhiyunat 0x00000094 : */ 0x800c0004,0x00000298, 508*4882a593Smuzhiyun/* 509*4882a593Smuzhiyun JUMP IgnoreMsgInAfterCmd, IF SAVE_DATA_PTRS_MSG 510*4882a593Smuzhiyun 511*4882a593Smuzhiyunat 0x00000096 : */ 0x800c0002,0x00000288, 512*4882a593Smuzhiyun/* 513*4882a593Smuzhiyun JUMP IgnoreMsgInAfterCmd, IF RESTORE_DATA_PTRS_MSG 514*4882a593Smuzhiyun 515*4882a593Smuzhiyunat 0x00000098 : */ 0x800c0003,0x00000288, 516*4882a593Smuzhiyun/* 517*4882a593Smuzhiyun CALL ProcessReceiveMessage 518*4882a593Smuzhiyun 519*4882a593Smuzhiyunat 0x0000009a : */ 0x88080000,0x000000a8, 520*4882a593Smuzhiyun/* 521*4882a593Smuzhiyun INT MSG_IN_AFTER_CMD 522*4882a593Smuzhiyun 523*4882a593Smuzhiyunat 0x0000009c : */ 0x98080000,0x00000350, 524*4882a593Smuzhiyun/* 525*4882a593Smuzhiyun CLEAR ACK 526*4882a593Smuzhiyun 527*4882a593Smuzhiyunat 0x0000009e : */ 0x60000040,0x00000000, 528*4882a593Smuzhiyun/* 529*4882a593Smuzhiyun JUMP ResumeSendCommand 530*4882a593Smuzhiyun 531*4882a593Smuzhiyunat 0x000000a0 : */ 0x80080000,0x000001e8, 532*4882a593Smuzhiyun/* 533*4882a593Smuzhiyun 534*4882a593SmuzhiyunIgnoreMsgInAfterCmd: 535*4882a593Smuzhiyun CLEAR ACK 536*4882a593Smuzhiyun 537*4882a593Smuzhiyunat 0x000000a2 : */ 0x60000040,0x00000000, 538*4882a593Smuzhiyun/* 539*4882a593Smuzhiyun JUMP ResumeSendCommand 540*4882a593Smuzhiyun 541*4882a593Smuzhiyunat 0x000000a4 : */ 0x80080000,0x000001e8, 542*4882a593Smuzhiyun/* 543*4882a593Smuzhiyun 544*4882a593SmuzhiyunDisconnectAfterCmd: 545*4882a593Smuzhiyun CLEAR ACK 546*4882a593Smuzhiyun 547*4882a593Smuzhiyunat 0x000000a6 : */ 0x60000040,0x00000000, 548*4882a593Smuzhiyun/* 549*4882a593Smuzhiyun WAIT DISCONNECT 550*4882a593Smuzhiyun 551*4882a593Smuzhiyunat 0x000000a8 : */ 0x48000000,0x00000000, 552*4882a593Smuzhiyun/* 553*4882a593Smuzhiyun ENTRY Disconnect1 554*4882a593SmuzhiyunDisconnect1: 555*4882a593Smuzhiyun INT DISCONNECT_AFTER_CMD 556*4882a593Smuzhiyun 557*4882a593Smuzhiyunat 0x000000aa : */ 0x98080000,0x00000380, 558*4882a593Smuzhiyun/* 559*4882a593Smuzhiyun ENTRY Disconnect2 560*4882a593SmuzhiyunDisconnect2: 561*4882a593Smuzhiyun; We return here after a reselection 562*4882a593Smuzhiyun CLEAR ACK 563*4882a593Smuzhiyun 564*4882a593Smuzhiyunat 0x000000ac : */ 0x60000040,0x00000000, 565*4882a593Smuzhiyun/* 566*4882a593Smuzhiyun JUMP ResumeSendCommand 567*4882a593Smuzhiyun 568*4882a593Smuzhiyunat 0x000000ae : */ 0x80080000,0x000001e8, 569*4882a593Smuzhiyun/* 570*4882a593Smuzhiyun 571*4882a593SmuzhiyunMsgInBeforeCommand: 572*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 573*4882a593Smuzhiyun 574*4882a593Smuzhiyunat 0x000000b0 : */ 0x0f000001,0x00000000, 575*4882a593Smuzhiyun/* 576*4882a593Smuzhiyun JUMP IgnoreMsgBeforeCommand, IF SAVE_DATA_PTRS_MSG 577*4882a593Smuzhiyun 578*4882a593Smuzhiyunat 0x000000b2 : */ 0x800c0002,0x000001c0, 579*4882a593Smuzhiyun/* 580*4882a593Smuzhiyun JUMP IgnoreMsgBeforeCommand, IF RESTORE_DATA_PTRS_MSG 581*4882a593Smuzhiyun 582*4882a593Smuzhiyunat 0x000000b4 : */ 0x800c0003,0x000001c0, 583*4882a593Smuzhiyun/* 584*4882a593Smuzhiyun CALL ProcessReceiveMessage 585*4882a593Smuzhiyun 586*4882a593Smuzhiyunat 0x000000b6 : */ 0x88080000,0x000000a8, 587*4882a593Smuzhiyun/* 588*4882a593Smuzhiyun INT MSG_IN_BEFORE_CMD 589*4882a593Smuzhiyun 590*4882a593Smuzhiyunat 0x000000b8 : */ 0x98080000,0x00000250, 591*4882a593Smuzhiyun/* 592*4882a593Smuzhiyun CLEAR ACK 593*4882a593Smuzhiyun 594*4882a593Smuzhiyunat 0x000000ba : */ 0x60000040,0x00000000, 595*4882a593Smuzhiyun/* 596*4882a593Smuzhiyun JUMP SendCommand 597*4882a593Smuzhiyun 598*4882a593Smuzhiyunat 0x000000bc : */ 0x80080000,0x000001c8, 599*4882a593Smuzhiyun/* 600*4882a593Smuzhiyun 601*4882a593SmuzhiyunDataIn: 602*4882a593Smuzhiyun CALL SGScriptStartAddress 603*4882a593Smuzhiyun 604*4882a593Smuzhiyunat 0x000000be : */ 0x88080000,0x00000000, 605*4882a593Smuzhiyun/* 606*4882a593SmuzhiyunResumeDataIn: 607*4882a593Smuzhiyun JUMP Finish, WHEN STATUS 608*4882a593Smuzhiyun 609*4882a593Smuzhiyunat 0x000000c0 : */ 0x830b0000,0x00000460, 610*4882a593Smuzhiyun/* 611*4882a593Smuzhiyun JUMP MsgInAfterDataIn, IF MSG_IN 612*4882a593Smuzhiyun 613*4882a593Smuzhiyunat 0x000000c2 : */ 0x870a0000,0x00000358, 614*4882a593Smuzhiyun/* 615*4882a593Smuzhiyun JUMP DataInAfterDataIn, if DATA_IN 616*4882a593Smuzhiyun 617*4882a593Smuzhiyunat 0x000000c4 : */ 0x810a0000,0x00000328, 618*4882a593Smuzhiyun/* 619*4882a593Smuzhiyun INT MSG_OUT_AFTER_DATA_IN, if MSG_OUT 620*4882a593Smuzhiyun 621*4882a593Smuzhiyunat 0x000000c6 : */ 0x9e0a0000,0x00000590, 622*4882a593Smuzhiyun/* 623*4882a593Smuzhiyun INT UNEXPECTED_PHASE_AFTER_DATA_IN 624*4882a593Smuzhiyun 625*4882a593Smuzhiyunat 0x000000c8 : */ 0x98080000,0x00000520, 626*4882a593Smuzhiyun/* 627*4882a593Smuzhiyun 628*4882a593SmuzhiyunDataInAfterDataIn: 629*4882a593Smuzhiyun INT DATA_IN_AFTER_DATA_IN 630*4882a593Smuzhiyun 631*4882a593Smuzhiyunat 0x000000ca : */ 0x98080000,0x000005a0, 632*4882a593Smuzhiyun/* 633*4882a593Smuzhiyun JUMP ResumeDataIn 634*4882a593Smuzhiyun 635*4882a593Smuzhiyunat 0x000000cc : */ 0x80080000,0x00000300, 636*4882a593Smuzhiyun/* 637*4882a593Smuzhiyun 638*4882a593SmuzhiyunDataOut: 639*4882a593Smuzhiyun CALL SGScriptStartAddress 640*4882a593Smuzhiyun 641*4882a593Smuzhiyunat 0x000000ce : */ 0x88080000,0x00000000, 642*4882a593Smuzhiyun/* 643*4882a593SmuzhiyunResumeDataOut: 644*4882a593Smuzhiyun JUMP Finish, WHEN STATUS 645*4882a593Smuzhiyun 646*4882a593Smuzhiyunat 0x000000d0 : */ 0x830b0000,0x00000460, 647*4882a593Smuzhiyun/* 648*4882a593Smuzhiyun JUMP MsgInAfterDataOut, IF MSG_IN 649*4882a593Smuzhiyun 650*4882a593Smuzhiyunat 0x000000d2 : */ 0x870a0000,0x000003e8, 651*4882a593Smuzhiyun/* 652*4882a593Smuzhiyun INT UNEXPECTED_PHASE_AFTER_DATA_OUT 653*4882a593Smuzhiyun 654*4882a593Smuzhiyunat 0x000000d4 : */ 0x98080000,0x00000620, 655*4882a593Smuzhiyun/* 656*4882a593Smuzhiyun 657*4882a593SmuzhiyunMsgInAfterDataIn: 658*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 659*4882a593Smuzhiyun 660*4882a593Smuzhiyunat 0x000000d6 : */ 0x0f000001,0x00000000, 661*4882a593Smuzhiyun/* 662*4882a593Smuzhiyun JUMP DisconnectAfterDataIn, IF DISCONNECT_MSG 663*4882a593Smuzhiyun 664*4882a593Smuzhiyunat 0x000000d8 : */ 0x800c0004,0x000003c0, 665*4882a593Smuzhiyun/* 666*4882a593Smuzhiyun JUMP IgnoreMsgAfterData, IF SAVE_DATA_PTRS_MSG 667*4882a593Smuzhiyun 668*4882a593Smuzhiyunat 0x000000da : */ 0x800c0002,0x00000428, 669*4882a593Smuzhiyun/* 670*4882a593Smuzhiyun JUMP IgnoreMsgAfterData, IF RESTORE_DATA_PTRS_MSG 671*4882a593Smuzhiyun 672*4882a593Smuzhiyunat 0x000000dc : */ 0x800c0003,0x00000428, 673*4882a593Smuzhiyun/* 674*4882a593Smuzhiyun CALL ProcessReceiveMessage 675*4882a593Smuzhiyun 676*4882a593Smuzhiyunat 0x000000de : */ 0x88080000,0x000000a8, 677*4882a593Smuzhiyun/* 678*4882a593Smuzhiyun INT MSG_IN_AFTER_DATA_IN 679*4882a593Smuzhiyun 680*4882a593Smuzhiyunat 0x000000e0 : */ 0x98080000,0x00000550, 681*4882a593Smuzhiyun/* 682*4882a593Smuzhiyun CLEAR ACK 683*4882a593Smuzhiyun 684*4882a593Smuzhiyunat 0x000000e2 : */ 0x60000040,0x00000000, 685*4882a593Smuzhiyun/* 686*4882a593Smuzhiyun JUMP ResumeDataIn 687*4882a593Smuzhiyun 688*4882a593Smuzhiyunat 0x000000e4 : */ 0x80080000,0x00000300, 689*4882a593Smuzhiyun/* 690*4882a593Smuzhiyun 691*4882a593SmuzhiyunDisconnectDuringDataIn: 692*4882a593Smuzhiyun CLEAR ACK 693*4882a593Smuzhiyun 694*4882a593Smuzhiyunat 0x000000e6 : */ 0x60000040,0x00000000, 695*4882a593Smuzhiyun/* 696*4882a593Smuzhiyun WAIT DISCONNECT 697*4882a593Smuzhiyun 698*4882a593Smuzhiyunat 0x000000e8 : */ 0x48000000,0x00000000, 699*4882a593Smuzhiyun/* 700*4882a593Smuzhiyun ENTRY Disconnect3 701*4882a593SmuzhiyunDisconnect3: 702*4882a593Smuzhiyun INT DISCONNECT_DURING_DATA 703*4882a593Smuzhiyun 704*4882a593Smuzhiyunat 0x000000ea : */ 0x98080000,0x00000780, 705*4882a593Smuzhiyun/* 706*4882a593Smuzhiyun ENTRY Disconnect4 707*4882a593SmuzhiyunDisconnect4: 708*4882a593Smuzhiyun; we return here after a reselection 709*4882a593Smuzhiyun CLEAR ACK 710*4882a593Smuzhiyun 711*4882a593Smuzhiyunat 0x000000ec : */ 0x60000040,0x00000000, 712*4882a593Smuzhiyun/* 713*4882a593Smuzhiyun JUMP ResumeSendCommand 714*4882a593Smuzhiyun 715*4882a593Smuzhiyunat 0x000000ee : */ 0x80080000,0x000001e8, 716*4882a593Smuzhiyun/* 717*4882a593Smuzhiyun 718*4882a593Smuzhiyun 719*4882a593SmuzhiyunDisconnectAfterDataIn: 720*4882a593Smuzhiyun CLEAR ACK 721*4882a593Smuzhiyun 722*4882a593Smuzhiyunat 0x000000f0 : */ 0x60000040,0x00000000, 723*4882a593Smuzhiyun/* 724*4882a593Smuzhiyun WAIT DISCONNECT 725*4882a593Smuzhiyun 726*4882a593Smuzhiyunat 0x000000f2 : */ 0x48000000,0x00000000, 727*4882a593Smuzhiyun/* 728*4882a593Smuzhiyun ENTRY Disconnect5 729*4882a593SmuzhiyunDisconnect5: 730*4882a593Smuzhiyun INT DISCONNECT_AFTER_DATA 731*4882a593Smuzhiyun 732*4882a593Smuzhiyunat 0x000000f4 : */ 0x98080000,0x00000580, 733*4882a593Smuzhiyun/* 734*4882a593Smuzhiyun ENTRY Disconnect6 735*4882a593SmuzhiyunDisconnect6: 736*4882a593Smuzhiyun; we return here after a reselection 737*4882a593Smuzhiyun CLEAR ACK 738*4882a593Smuzhiyun 739*4882a593Smuzhiyunat 0x000000f6 : */ 0x60000040,0x00000000, 740*4882a593Smuzhiyun/* 741*4882a593Smuzhiyun JUMP ResumeDataIn 742*4882a593Smuzhiyun 743*4882a593Smuzhiyunat 0x000000f8 : */ 0x80080000,0x00000300, 744*4882a593Smuzhiyun/* 745*4882a593Smuzhiyun 746*4882a593SmuzhiyunMsgInAfterDataOut: 747*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 748*4882a593Smuzhiyun 749*4882a593Smuzhiyunat 0x000000fa : */ 0x0f000001,0x00000000, 750*4882a593Smuzhiyun/* 751*4882a593Smuzhiyun JUMP DisconnectAfterDataOut, if DISCONNECT_MSG 752*4882a593Smuzhiyun 753*4882a593Smuzhiyunat 0x000000fc : */ 0x800c0004,0x00000438, 754*4882a593Smuzhiyun/* 755*4882a593Smuzhiyun JUMP IgnoreMsgAfterData, IF SAVE_DATA_PTRS_MSG 756*4882a593Smuzhiyun 757*4882a593Smuzhiyunat 0x000000fe : */ 0x800c0002,0x00000428, 758*4882a593Smuzhiyun/* 759*4882a593Smuzhiyun JUMP IgnoreMsgAfterData, IF RESTORE_DATA_PTRS_MSG 760*4882a593Smuzhiyun 761*4882a593Smuzhiyunat 0x00000100 : */ 0x800c0003,0x00000428, 762*4882a593Smuzhiyun/* 763*4882a593Smuzhiyun CALL ProcessReceiveMessage 764*4882a593Smuzhiyun 765*4882a593Smuzhiyunat 0x00000102 : */ 0x88080000,0x000000a8, 766*4882a593Smuzhiyun/* 767*4882a593Smuzhiyun INT MSG_IN_AFTER_DATA_OUT 768*4882a593Smuzhiyun 769*4882a593Smuzhiyunat 0x00000104 : */ 0x98080000,0x00000650, 770*4882a593Smuzhiyun/* 771*4882a593Smuzhiyun CLEAR ACK 772*4882a593Smuzhiyun 773*4882a593Smuzhiyunat 0x00000106 : */ 0x60000040,0x00000000, 774*4882a593Smuzhiyun/* 775*4882a593Smuzhiyun JUMP ResumeDataOut 776*4882a593Smuzhiyun 777*4882a593Smuzhiyunat 0x00000108 : */ 0x80080000,0x00000340, 778*4882a593Smuzhiyun/* 779*4882a593Smuzhiyun 780*4882a593SmuzhiyunIgnoreMsgAfterData: 781*4882a593Smuzhiyun CLEAR ACK 782*4882a593Smuzhiyun 783*4882a593Smuzhiyunat 0x0000010a : */ 0x60000040,0x00000000, 784*4882a593Smuzhiyun/* 785*4882a593Smuzhiyun; Data in and out do the same thing on resume, so pick one 786*4882a593Smuzhiyun JUMP ResumeDataIn 787*4882a593Smuzhiyun 788*4882a593Smuzhiyunat 0x0000010c : */ 0x80080000,0x00000300, 789*4882a593Smuzhiyun/* 790*4882a593Smuzhiyun 791*4882a593SmuzhiyunDisconnectAfterDataOut: 792*4882a593Smuzhiyun CLEAR ACK 793*4882a593Smuzhiyun 794*4882a593Smuzhiyunat 0x0000010e : */ 0x60000040,0x00000000, 795*4882a593Smuzhiyun/* 796*4882a593Smuzhiyun WAIT DISCONNECT 797*4882a593Smuzhiyun 798*4882a593Smuzhiyunat 0x00000110 : */ 0x48000000,0x00000000, 799*4882a593Smuzhiyun/* 800*4882a593Smuzhiyun ENTRY Disconnect7 801*4882a593SmuzhiyunDisconnect7: 802*4882a593Smuzhiyun INT DISCONNECT_AFTER_DATA 803*4882a593Smuzhiyun 804*4882a593Smuzhiyunat 0x00000112 : */ 0x98080000,0x00000580, 805*4882a593Smuzhiyun/* 806*4882a593Smuzhiyun ENTRY Disconnect8 807*4882a593SmuzhiyunDisconnect8: 808*4882a593Smuzhiyun; we return here after a reselection 809*4882a593Smuzhiyun CLEAR ACK 810*4882a593Smuzhiyun 811*4882a593Smuzhiyunat 0x00000114 : */ 0x60000040,0x00000000, 812*4882a593Smuzhiyun/* 813*4882a593Smuzhiyun JUMP ResumeDataOut 814*4882a593Smuzhiyun 815*4882a593Smuzhiyunat 0x00000116 : */ 0x80080000,0x00000340, 816*4882a593Smuzhiyun/* 817*4882a593Smuzhiyun 818*4882a593SmuzhiyunFinish: 819*4882a593Smuzhiyun MOVE 1, StatusAddress, WHEN STATUS 820*4882a593Smuzhiyun 821*4882a593Smuzhiyunat 0x00000118 : */ 0x0b000001,0x00000000, 822*4882a593Smuzhiyun/* 823*4882a593Smuzhiyun INT NOT_MSG_IN_AFTER_STATUS, WHEN NOT MSG_IN 824*4882a593Smuzhiyun 825*4882a593Smuzhiyunat 0x0000011a : */ 0x9f030000,0x00000430, 826*4882a593Smuzhiyun/* 827*4882a593Smuzhiyun MOVE 1, ReceiveMsgAddress, WHEN MSG_IN 828*4882a593Smuzhiyun 829*4882a593Smuzhiyunat 0x0000011c : */ 0x0f000001,0x00000000, 830*4882a593Smuzhiyun/* 831*4882a593Smuzhiyun JUMP FinishCommandComplete, IF COMMAND_COMPLETE_MSG 832*4882a593Smuzhiyun 833*4882a593Smuzhiyunat 0x0000011e : */ 0x800c0000,0x00000490, 834*4882a593Smuzhiyun/* 835*4882a593Smuzhiyun CALL ProcessReceiveMessage 836*4882a593Smuzhiyun 837*4882a593Smuzhiyunat 0x00000120 : */ 0x88080000,0x000000a8, 838*4882a593Smuzhiyun/* 839*4882a593Smuzhiyun INT MSG_IN_AFTER_STATUS 840*4882a593Smuzhiyun 841*4882a593Smuzhiyunat 0x00000122 : */ 0x98080000,0x00000440, 842*4882a593Smuzhiyun/* 843*4882a593Smuzhiyun ENTRY FinishCommandComplete 844*4882a593SmuzhiyunFinishCommandComplete: 845*4882a593Smuzhiyun CLEAR ACK 846*4882a593Smuzhiyun 847*4882a593Smuzhiyunat 0x00000124 : */ 0x60000040,0x00000000, 848*4882a593Smuzhiyun/* 849*4882a593Smuzhiyun WAIT DISCONNECT 850*4882a593Smuzhiyun 851*4882a593Smuzhiyunat 0x00000126 : */ 0x48000000,0x00000000, 852*4882a593Smuzhiyun/* 853*4882a593Smuzhiyun ENTRY Finish1 854*4882a593SmuzhiyunFinish1: 855*4882a593Smuzhiyun INT GOOD_STATUS_AFTER_STATUS 856*4882a593Smuzhiyun 857*4882a593Smuzhiyunat 0x00000128 : */ 0x98080000,0x00000401, 858*4882a593Smuzhiyun}; 859*4882a593Smuzhiyun 860*4882a593Smuzhiyun#define A_AFTER_CMD 0x00000300 861*4882a593Smuzhiyunstatic u32 A_AFTER_CMD_used[] __attribute((unused)) = { 862*4882a593Smuzhiyun}; 863*4882a593Smuzhiyun 864*4882a593Smuzhiyun#define A_AFTER_DATA_IN 0x00000500 865*4882a593Smuzhiyunstatic u32 A_AFTER_DATA_IN_used[] __attribute((unused)) = { 866*4882a593Smuzhiyun}; 867*4882a593Smuzhiyun 868*4882a593Smuzhiyun#define A_AFTER_DATA_OUT 0x00000600 869*4882a593Smuzhiyunstatic u32 A_AFTER_DATA_OUT_used[] __attribute((unused)) = { 870*4882a593Smuzhiyun}; 871*4882a593Smuzhiyun 872*4882a593Smuzhiyun#define A_AFTER_SELECTION 0x00000100 873*4882a593Smuzhiyunstatic u32 A_AFTER_SELECTION_used[] __attribute((unused)) = { 874*4882a593Smuzhiyun}; 875*4882a593Smuzhiyun 876*4882a593Smuzhiyun#define A_AFTER_STATUS 0x00000400 877*4882a593Smuzhiyunstatic u32 A_AFTER_STATUS_used[] __attribute((unused)) = { 878*4882a593Smuzhiyun}; 879*4882a593Smuzhiyun 880*4882a593Smuzhiyun#define A_BEFORE_CMD 0x00000200 881*4882a593Smuzhiyunstatic u32 A_BEFORE_CMD_used[] __attribute((unused)) = { 882*4882a593Smuzhiyun}; 883*4882a593Smuzhiyun 884*4882a593Smuzhiyun#define A_COMMAND_COMPLETE_MSG 0x00000000 885*4882a593Smuzhiyunstatic u32 A_COMMAND_COMPLETE_MSG_used[] __attribute((unused)) = { 886*4882a593Smuzhiyun 0x0000011e, 887*4882a593Smuzhiyun}; 888*4882a593Smuzhiyun 889*4882a593Smuzhiyun#define A_COMPLETED_SELECTION_AS_TARGET 0x00001001 890*4882a593Smuzhiyunstatic u32 A_COMPLETED_SELECTION_AS_TARGET_used[] __attribute((unused)) = { 891*4882a593Smuzhiyun 0x0000001d, 892*4882a593Smuzhiyun}; 893*4882a593Smuzhiyun 894*4882a593Smuzhiyun#define A_CommandAddress 0x00000000 895*4882a593Smuzhiyunstatic u32 A_CommandAddress_used[] __attribute((unused)) = { 896*4882a593Smuzhiyun 0x00000079, 897*4882a593Smuzhiyun}; 898*4882a593Smuzhiyun 899*4882a593Smuzhiyun#define A_CommandCount 0x00000000 900*4882a593Smuzhiyunstatic u32 A_CommandCount_used[] __attribute((unused)) = { 901*4882a593Smuzhiyun 0x00000078, 902*4882a593Smuzhiyun}; 903*4882a593Smuzhiyun 904*4882a593Smuzhiyun#define A_DATA_IN_AFTER_DATA_IN 0x000005a0 905*4882a593Smuzhiyunstatic u32 A_DATA_IN_AFTER_DATA_IN_used[] __attribute((unused)) = { 906*4882a593Smuzhiyun 0x000000cb, 907*4882a593Smuzhiyun}; 908*4882a593Smuzhiyun 909*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT 0x00003000 910*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT_used[] __attribute((unused)) = { 911*4882a593Smuzhiyun}; 912*4882a593Smuzhiyun 913*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT1 0x00003001 914*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT1_used[] __attribute((unused)) = { 915*4882a593Smuzhiyun}; 916*4882a593Smuzhiyun 917*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT2 0x00003002 918*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT2_used[] __attribute((unused)) = { 919*4882a593Smuzhiyun}; 920*4882a593Smuzhiyun 921*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT3 0x00003003 922*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT3_used[] __attribute((unused)) = { 923*4882a593Smuzhiyun}; 924*4882a593Smuzhiyun 925*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT4 0x00003004 926*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT4_used[] __attribute((unused)) = { 927*4882a593Smuzhiyun}; 928*4882a593Smuzhiyun 929*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT5 0x00003005 930*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT5_used[] __attribute((unused)) = { 931*4882a593Smuzhiyun}; 932*4882a593Smuzhiyun 933*4882a593Smuzhiyun#define A_DEBUG_INTERRUPT6 0x00003006 934*4882a593Smuzhiyunstatic u32 A_DEBUG_INTERRUPT6_used[] __attribute((unused)) = { 935*4882a593Smuzhiyun}; 936*4882a593Smuzhiyun 937*4882a593Smuzhiyun#define A_DISCONNECT 0x00000080 938*4882a593Smuzhiyunstatic u32 A_DISCONNECT_used[] __attribute((unused)) = { 939*4882a593Smuzhiyun}; 940*4882a593Smuzhiyun 941*4882a593Smuzhiyun#define A_DISCONNECT_AFTER_CMD 0x00000380 942*4882a593Smuzhiyunstatic u32 A_DISCONNECT_AFTER_CMD_used[] __attribute((unused)) = { 943*4882a593Smuzhiyun 0x000000ab, 944*4882a593Smuzhiyun}; 945*4882a593Smuzhiyun 946*4882a593Smuzhiyun#define A_DISCONNECT_AFTER_DATA 0x00000580 947*4882a593Smuzhiyunstatic u32 A_DISCONNECT_AFTER_DATA_used[] __attribute((unused)) = { 948*4882a593Smuzhiyun 0x000000f5, 949*4882a593Smuzhiyun 0x00000113, 950*4882a593Smuzhiyun}; 951*4882a593Smuzhiyun 952*4882a593Smuzhiyun#define A_DISCONNECT_DURING_DATA 0x00000780 953*4882a593Smuzhiyunstatic u32 A_DISCONNECT_DURING_DATA_used[] __attribute((unused)) = { 954*4882a593Smuzhiyun 0x000000eb, 955*4882a593Smuzhiyun}; 956*4882a593Smuzhiyun 957*4882a593Smuzhiyun#define A_DISCONNECT_MSG 0x00000004 958*4882a593Smuzhiyunstatic u32 A_DISCONNECT_MSG_used[] __attribute((unused)) = { 959*4882a593Smuzhiyun 0x0000008a, 960*4882a593Smuzhiyun 0x00000094, 961*4882a593Smuzhiyun 0x000000d8, 962*4882a593Smuzhiyun 0x000000fc, 963*4882a593Smuzhiyun}; 964*4882a593Smuzhiyun 965*4882a593Smuzhiyun#define A_DURING_DATA_IN 0x00000700 966*4882a593Smuzhiyunstatic u32 A_DURING_DATA_IN_used[] __attribute((unused)) = { 967*4882a593Smuzhiyun}; 968*4882a593Smuzhiyun 969*4882a593Smuzhiyun#define A_Device_ID 0x00000000 970*4882a593Smuzhiyunstatic u32 A_Device_ID_used[] __attribute((unused)) = { 971*4882a593Smuzhiyun 0x00000000, 972*4882a593Smuzhiyun}; 973*4882a593Smuzhiyun 974*4882a593Smuzhiyun#define A_EXTENDED_MSG 0x00000001 975*4882a593Smuzhiyunstatic u32 A_EXTENDED_MSG_used[] __attribute((unused)) = { 976*4882a593Smuzhiyun 0x0000002a, 977*4882a593Smuzhiyun}; 978*4882a593Smuzhiyun 979*4882a593Smuzhiyun#define A_FATAL 0x00002000 980*4882a593Smuzhiyunstatic u32 A_FATAL_used[] __attribute((unused)) = { 981*4882a593Smuzhiyun}; 982*4882a593Smuzhiyun 983*4882a593Smuzhiyun#define A_FATAL_ILLEGAL_MSG_LENGTH 0x00002003 984*4882a593Smuzhiyunstatic u32 A_FATAL_ILLEGAL_MSG_LENGTH_used[] __attribute((unused)) = { 985*4882a593Smuzhiyun 0x00000043, 986*4882a593Smuzhiyun}; 987*4882a593Smuzhiyun 988*4882a593Smuzhiyun#define A_FATAL_NOT_MSG_IN_AFTER_SELECTION 0x00002002 989*4882a593Smuzhiyunstatic u32 A_FATAL_NOT_MSG_IN_AFTER_SELECTION_used[] __attribute((unused)) = { 990*4882a593Smuzhiyun 0x0000000d, 991*4882a593Smuzhiyun}; 992*4882a593Smuzhiyun 993*4882a593Smuzhiyun#define A_FATAL_SEND_MSG 0x00002001 994*4882a593Smuzhiyunstatic u32 A_FATAL_SEND_MSG_used[] __attribute((unused)) = { 995*4882a593Smuzhiyun 0x00000023, 996*4882a593Smuzhiyun}; 997*4882a593Smuzhiyun 998*4882a593Smuzhiyun#define A_FATAL_UNEXPECTED_RESELECTION_MSG 0x00002000 999*4882a593Smuzhiyunstatic u32 A_FATAL_UNEXPECTED_RESELECTION_MSG_used[] __attribute((unused)) = { 1000*4882a593Smuzhiyun}; 1001*4882a593Smuzhiyun 1002*4882a593Smuzhiyun#define A_GOOD_STATUS 0x00000001 1003*4882a593Smuzhiyunstatic u32 A_GOOD_STATUS_used[] __attribute((unused)) = { 1004*4882a593Smuzhiyun}; 1005*4882a593Smuzhiyun 1006*4882a593Smuzhiyun#define A_GOOD_STATUS_AFTER_STATUS 0x00000401 1007*4882a593Smuzhiyunstatic u32 A_GOOD_STATUS_AFTER_STATUS_used[] __attribute((unused)) = { 1008*4882a593Smuzhiyun 0x00000129, 1009*4882a593Smuzhiyun}; 1010*4882a593Smuzhiyun 1011*4882a593Smuzhiyun#define A_IDENTIFY_MSG 0x00000080 1012*4882a593Smuzhiyunstatic u32 A_IDENTIFY_MSG_used[] __attribute((unused)) = { 1013*4882a593Smuzhiyun}; 1014*4882a593Smuzhiyun 1015*4882a593Smuzhiyun#define A_IDENTIFY_MSG_MASK 0x0000007f 1016*4882a593Smuzhiyunstatic u32 A_IDENTIFY_MSG_MASK_used[] __attribute((unused)) = { 1017*4882a593Smuzhiyun}; 1018*4882a593Smuzhiyun 1019*4882a593Smuzhiyun#define A_MSG_IN 0x00000050 1020*4882a593Smuzhiyunstatic u32 A_MSG_IN_used[] __attribute((unused)) = { 1021*4882a593Smuzhiyun}; 1022*4882a593Smuzhiyun 1023*4882a593Smuzhiyun#define A_MSG_IN_AFTER_CMD 0x00000350 1024*4882a593Smuzhiyunstatic u32 A_MSG_IN_AFTER_CMD_used[] __attribute((unused)) = { 1025*4882a593Smuzhiyun 0x0000009d, 1026*4882a593Smuzhiyun}; 1027*4882a593Smuzhiyun 1028*4882a593Smuzhiyun#define A_MSG_IN_AFTER_DATA_IN 0x00000550 1029*4882a593Smuzhiyunstatic u32 A_MSG_IN_AFTER_DATA_IN_used[] __attribute((unused)) = { 1030*4882a593Smuzhiyun 0x000000e1, 1031*4882a593Smuzhiyun}; 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyun#define A_MSG_IN_AFTER_DATA_OUT 0x00000650 1034*4882a593Smuzhiyunstatic u32 A_MSG_IN_AFTER_DATA_OUT_used[] __attribute((unused)) = { 1035*4882a593Smuzhiyun 0x00000105, 1036*4882a593Smuzhiyun}; 1037*4882a593Smuzhiyun 1038*4882a593Smuzhiyun#define A_MSG_IN_AFTER_STATUS 0x00000440 1039*4882a593Smuzhiyunstatic u32 A_MSG_IN_AFTER_STATUS_used[] __attribute((unused)) = { 1040*4882a593Smuzhiyun 0x00000123, 1041*4882a593Smuzhiyun}; 1042*4882a593Smuzhiyun 1043*4882a593Smuzhiyun#define A_MSG_IN_BEFORE_CMD 0x00000250 1044*4882a593Smuzhiyunstatic u32 A_MSG_IN_BEFORE_CMD_used[] __attribute((unused)) = { 1045*4882a593Smuzhiyun 0x000000b9, 1046*4882a593Smuzhiyun}; 1047*4882a593Smuzhiyun 1048*4882a593Smuzhiyun#define A_MSG_IN_DURING_DATA_IN 0x00000750 1049*4882a593Smuzhiyunstatic u32 A_MSG_IN_DURING_DATA_IN_used[] __attribute((unused)) = { 1050*4882a593Smuzhiyun 0x00000091, 1051*4882a593Smuzhiyun}; 1052*4882a593Smuzhiyun 1053*4882a593Smuzhiyun#define A_MSG_OUT 0x00000090 1054*4882a593Smuzhiyunstatic u32 A_MSG_OUT_used[] __attribute((unused)) = { 1055*4882a593Smuzhiyun}; 1056*4882a593Smuzhiyun 1057*4882a593Smuzhiyun#define A_MSG_OUT_AFTER_DATA_IN 0x00000590 1058*4882a593Smuzhiyunstatic u32 A_MSG_OUT_AFTER_DATA_IN_used[] __attribute((unused)) = { 1059*4882a593Smuzhiyun 0x000000c7, 1060*4882a593Smuzhiyun}; 1061*4882a593Smuzhiyun 1062*4882a593Smuzhiyun#define A_MessageCount 0x00000000 1063*4882a593Smuzhiyunstatic u32 A_MessageCount_used[] __attribute((unused)) = { 1064*4882a593Smuzhiyun 0x0000001e, 1065*4882a593Smuzhiyun}; 1066*4882a593Smuzhiyun 1067*4882a593Smuzhiyun#define A_MessageLocation 0x00000000 1068*4882a593Smuzhiyunstatic u32 A_MessageLocation_used[] __attribute((unused)) = { 1069*4882a593Smuzhiyun 0x0000001f, 1070*4882a593Smuzhiyun}; 1071*4882a593Smuzhiyun 1072*4882a593Smuzhiyun#define A_NOT_MSG_IN 0x00000030 1073*4882a593Smuzhiyunstatic u32 A_NOT_MSG_IN_used[] __attribute((unused)) = { 1074*4882a593Smuzhiyun}; 1075*4882a593Smuzhiyun 1076*4882a593Smuzhiyun#define A_NOT_MSG_IN_AFTER_STATUS 0x00000430 1077*4882a593Smuzhiyunstatic u32 A_NOT_MSG_IN_AFTER_STATUS_used[] __attribute((unused)) = { 1078*4882a593Smuzhiyun 0x0000011b, 1079*4882a593Smuzhiyun}; 1080*4882a593Smuzhiyun 1081*4882a593Smuzhiyun#define A_NOT_MSG_OUT 0x00000010 1082*4882a593Smuzhiyunstatic u32 A_NOT_MSG_OUT_used[] __attribute((unused)) = { 1083*4882a593Smuzhiyun}; 1084*4882a593Smuzhiyun 1085*4882a593Smuzhiyun#define A_NOT_MSG_OUT_AFTER_SELECTION 0x00000110 1086*4882a593Smuzhiyunstatic u32 A_NOT_MSG_OUT_AFTER_SELECTION_used[] __attribute((unused)) = { 1087*4882a593Smuzhiyun 0x00000007, 1088*4882a593Smuzhiyun}; 1089*4882a593Smuzhiyun 1090*4882a593Smuzhiyun#define A_PARITY_ERROR_MSG 0x00000009 1091*4882a593Smuzhiyunstatic u32 A_PARITY_ERROR_MSG_used[] __attribute((unused)) = { 1092*4882a593Smuzhiyun}; 1093*4882a593Smuzhiyun 1094*4882a593Smuzhiyun#define A_REJECT_MSG 0x00000007 1095*4882a593Smuzhiyunstatic u32 A_REJECT_MSG_used[] __attribute((unused)) = { 1096*4882a593Smuzhiyun}; 1097*4882a593Smuzhiyun 1098*4882a593Smuzhiyun#define A_REJECT_MSG_BEFORE_CMD 0x00000270 1099*4882a593Smuzhiyunstatic u32 A_REJECT_MSG_BEFORE_CMD_used[] __attribute((unused)) = { 1100*4882a593Smuzhiyun}; 1101*4882a593Smuzhiyun 1102*4882a593Smuzhiyun#define A_REJECT_MSG_R 0x00000070 1103*4882a593Smuzhiyunstatic u32 A_REJECT_MSG_R_used[] __attribute((unused)) = { 1104*4882a593Smuzhiyun}; 1105*4882a593Smuzhiyun 1106*4882a593Smuzhiyun#define A_RESELECTED_DURING_SELECTION 0x00001000 1107*4882a593Smuzhiyunstatic u32 A_RESELECTED_DURING_SELECTION_used[] __attribute((unused)) = { 1108*4882a593Smuzhiyun 0x0000000b, 1109*4882a593Smuzhiyun}; 1110*4882a593Smuzhiyun 1111*4882a593Smuzhiyun#define A_RESELECTION_IDENTIFIED 0x00001003 1112*4882a593Smuzhiyunstatic u32 A_RESELECTION_IDENTIFIED_used[] __attribute((unused)) = { 1113*4882a593Smuzhiyun 0x00000011, 1114*4882a593Smuzhiyun 0x00000015, 1115*4882a593Smuzhiyun}; 1116*4882a593Smuzhiyun 1117*4882a593Smuzhiyun#define A_RESTORE_DATA_PTRS_MSG 0x00000003 1118*4882a593Smuzhiyunstatic u32 A_RESTORE_DATA_PTRS_MSG_used[] __attribute((unused)) = { 1119*4882a593Smuzhiyun 0x0000008e, 1120*4882a593Smuzhiyun 0x00000098, 1121*4882a593Smuzhiyun 0x000000b4, 1122*4882a593Smuzhiyun 0x000000dc, 1123*4882a593Smuzhiyun 0x00000100, 1124*4882a593Smuzhiyun}; 1125*4882a593Smuzhiyun 1126*4882a593Smuzhiyun#define A_ReceiveMsgAddress 0x00000000 1127*4882a593Smuzhiyunstatic u32 A_ReceiveMsgAddress_used[] __attribute((unused)) = { 1128*4882a593Smuzhiyun 0x0000000f, 1129*4882a593Smuzhiyun 0x00000013, 1130*4882a593Smuzhiyun 0x00000029, 1131*4882a593Smuzhiyun 0x00000031, 1132*4882a593Smuzhiyun 0x00000037, 1133*4882a593Smuzhiyun 0x00000047, 1134*4882a593Smuzhiyun 0x0000004d, 1135*4882a593Smuzhiyun 0x00000053, 1136*4882a593Smuzhiyun 0x00000059, 1137*4882a593Smuzhiyun 0x0000005f, 1138*4882a593Smuzhiyun 0x00000089, 1139*4882a593Smuzhiyun 0x00000093, 1140*4882a593Smuzhiyun 0x000000b1, 1141*4882a593Smuzhiyun 0x000000d7, 1142*4882a593Smuzhiyun 0x000000fb, 1143*4882a593Smuzhiyun 0x0000011d, 1144*4882a593Smuzhiyun}; 1145*4882a593Smuzhiyun 1146*4882a593Smuzhiyun#define A_SAVE_DATA_PTRS_MSG 0x00000002 1147*4882a593Smuzhiyunstatic u32 A_SAVE_DATA_PTRS_MSG_used[] __attribute((unused)) = { 1148*4882a593Smuzhiyun 0x0000008c, 1149*4882a593Smuzhiyun 0x00000096, 1150*4882a593Smuzhiyun 0x000000b2, 1151*4882a593Smuzhiyun 0x000000da, 1152*4882a593Smuzhiyun 0x000000fe, 1153*4882a593Smuzhiyun}; 1154*4882a593Smuzhiyun 1155*4882a593Smuzhiyun#define A_SDTR_MSG 0x00000001 1156*4882a593Smuzhiyunstatic u32 A_SDTR_MSG_used[] __attribute((unused)) = { 1157*4882a593Smuzhiyun}; 1158*4882a593Smuzhiyun 1159*4882a593Smuzhiyun#define A_SDTR_MSG_AFTER_CMD 0x00000360 1160*4882a593Smuzhiyunstatic u32 A_SDTR_MSG_AFTER_CMD_used[] __attribute((unused)) = { 1161*4882a593Smuzhiyun}; 1162*4882a593Smuzhiyun 1163*4882a593Smuzhiyun#define A_SDTR_MSG_BEFORE_CMD 0x00000260 1164*4882a593Smuzhiyunstatic u32 A_SDTR_MSG_BEFORE_CMD_used[] __attribute((unused)) = { 1165*4882a593Smuzhiyun}; 1166*4882a593Smuzhiyun 1167*4882a593Smuzhiyun#define A_SDTR_MSG_R 0x00000060 1168*4882a593Smuzhiyunstatic u32 A_SDTR_MSG_R_used[] __attribute((unused)) = { 1169*4882a593Smuzhiyun}; 1170*4882a593Smuzhiyun 1171*4882a593Smuzhiyun#define A_SGScriptStartAddress 0x00000000 1172*4882a593Smuzhiyunstatic u32 A_SGScriptStartAddress_used[] __attribute((unused)) = { 1173*4882a593Smuzhiyun 0x000000bf, 1174*4882a593Smuzhiyun 0x000000cf, 1175*4882a593Smuzhiyun}; 1176*4882a593Smuzhiyun 1177*4882a593Smuzhiyun#define A_SIMPLE_TAG_MSG 0x00000020 1178*4882a593Smuzhiyunstatic u32 A_SIMPLE_TAG_MSG_used[] __attribute((unused)) = { 1179*4882a593Smuzhiyun}; 1180*4882a593Smuzhiyun 1181*4882a593Smuzhiyun#define A_StatusAddress 0x00000000 1182*4882a593Smuzhiyunstatic u32 A_StatusAddress_used[] __attribute((unused)) = { 1183*4882a593Smuzhiyun 0x00000119, 1184*4882a593Smuzhiyun}; 1185*4882a593Smuzhiyun 1186*4882a593Smuzhiyun#define A_TWO_BYTE_MSG 0x00000020 1187*4882a593Smuzhiyunstatic u32 A_TWO_BYTE_MSG_used[] __attribute((unused)) = { 1188*4882a593Smuzhiyun 0x0000002c, 1189*4882a593Smuzhiyun}; 1190*4882a593Smuzhiyun 1191*4882a593Smuzhiyun#define A_TWO_BYTE_MSG_MASK 0x0000000f 1192*4882a593Smuzhiyunstatic u32 A_TWO_BYTE_MSG_MASK_used[] __attribute((unused)) = { 1193*4882a593Smuzhiyun 0x0000002c, 1194*4882a593Smuzhiyun}; 1195*4882a593Smuzhiyun 1196*4882a593Smuzhiyun#define A_UNEXPECTED_MSG 0x00000040 1197*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_MSG_used[] __attribute((unused)) = { 1198*4882a593Smuzhiyun}; 1199*4882a593Smuzhiyun 1200*4882a593Smuzhiyun#define A_UNEXPECTED_MSG_BEFORE_CMD 0x00000240 1201*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_MSG_BEFORE_CMD_used[] __attribute((unused)) = { 1202*4882a593Smuzhiyun}; 1203*4882a593Smuzhiyun 1204*4882a593Smuzhiyun#define A_UNEXPECTED_PHASE 0x00000020 1205*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_PHASE_used[] __attribute((unused)) = { 1206*4882a593Smuzhiyun}; 1207*4882a593Smuzhiyun 1208*4882a593Smuzhiyun#define A_UNEXPECTED_PHASE_AFTER_CMD 0x00000320 1209*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_PHASE_AFTER_CMD_used[] __attribute((unused)) = { 1210*4882a593Smuzhiyun 0x00000083, 1211*4882a593Smuzhiyun}; 1212*4882a593Smuzhiyun 1213*4882a593Smuzhiyun#define A_UNEXPECTED_PHASE_AFTER_DATA_IN 0x00000520 1214*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_PHASE_AFTER_DATA_IN_used[] __attribute((unused)) = { 1215*4882a593Smuzhiyun 0x000000c9, 1216*4882a593Smuzhiyun}; 1217*4882a593Smuzhiyun 1218*4882a593Smuzhiyun#define A_UNEXPECTED_PHASE_AFTER_DATA_OUT 0x00000620 1219*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_PHASE_AFTER_DATA_OUT_used[] __attribute((unused)) = { 1220*4882a593Smuzhiyun 0x000000d5, 1221*4882a593Smuzhiyun}; 1222*4882a593Smuzhiyun 1223*4882a593Smuzhiyun#define A_UNEXPECTED_PHASE_BEFORE_CMD 0x00000220 1224*4882a593Smuzhiyunstatic u32 A_UNEXPECTED_PHASE_BEFORE_CMD_used[] __attribute((unused)) = { 1225*4882a593Smuzhiyun 0x00000077, 1226*4882a593Smuzhiyun}; 1227*4882a593Smuzhiyun 1228*4882a593Smuzhiyun#define A_WDTR_MSG 0x00000003 1229*4882a593Smuzhiyunstatic u32 A_WDTR_MSG_used[] __attribute((unused)) = { 1230*4882a593Smuzhiyun}; 1231*4882a593Smuzhiyun 1232*4882a593Smuzhiyun#define A_WDTR_MSG_AFTER_CMD 0x000003a0 1233*4882a593Smuzhiyunstatic u32 A_WDTR_MSG_AFTER_CMD_used[] __attribute((unused)) = { 1234*4882a593Smuzhiyun}; 1235*4882a593Smuzhiyun 1236*4882a593Smuzhiyun#define A_WDTR_MSG_R 0x000000a0 1237*4882a593Smuzhiyunstatic u32 A_WDTR_MSG_R_used[] __attribute((unused)) = { 1238*4882a593Smuzhiyun}; 1239*4882a593Smuzhiyun 1240*4882a593Smuzhiyun#define Ent_Disconnect1 0x000002a8 1241*4882a593Smuzhiyun#define Ent_Disconnect2 0x000002b0 1242*4882a593Smuzhiyun#define Ent_Disconnect3 0x000003a8 1243*4882a593Smuzhiyun#define Ent_Disconnect4 0x000003b0 1244*4882a593Smuzhiyun#define Ent_Disconnect5 0x000003d0 1245*4882a593Smuzhiyun#define Ent_Disconnect6 0x000003d8 1246*4882a593Smuzhiyun#define Ent_Disconnect7 0x00000448 1247*4882a593Smuzhiyun#define Ent_Disconnect8 0x00000450 1248*4882a593Smuzhiyun#define Ent_Finish1 0x000004a0 1249*4882a593Smuzhiyun#define Ent_Finish2 0x000004a8 1250*4882a593Smuzhiyun#define Ent_FinishCommandComplete 0x00000490 1251*4882a593Smuzhiyun#define Ent_GetReselectionData 0x00000038 1252*4882a593Smuzhiyun#define Ent_GetReselectionWithTag 0x00000048 1253*4882a593Smuzhiyun#define Ent_IgnoreMessage 0x00000188 1254*4882a593Smuzhiyun#define Ent_MsgInDuringData 0x00000218 1255*4882a593Smuzhiyun#define Ent_ReceiveMessage 0x000000a0 1256*4882a593Smuzhiyun#define Ent_SelectedAsTarget 0x00000058 1257*4882a593Smuzhiyun#define Ent_SendCommand 0x000001c8 1258*4882a593Smuzhiyun#define Ent_SendMessage 0x00000078 1259*4882a593Smuzhiyun#define Ent_SendMessagePhaseMismatch 0x00000090 1260*4882a593Smuzhiyun#define Ent_SendMessageWithATN 0x00000198 1261*4882a593Smuzhiyun#define Ent_StartUp 0x00000000 1262*4882a593Smuzhiyunstatic u32 LABELPATCHES[] __attribute((unused)) = { 1263*4882a593Smuzhiyun 0x00000001, 1264*4882a593Smuzhiyun 0x00000003, 1265*4882a593Smuzhiyun 0x00000005, 1266*4882a593Smuzhiyun 0x00000009, 1267*4882a593Smuzhiyun 0x00000027, 1268*4882a593Smuzhiyun 0x0000002b, 1269*4882a593Smuzhiyun 0x00000039, 1270*4882a593Smuzhiyun 0x0000003b, 1271*4882a593Smuzhiyun 0x0000003d, 1272*4882a593Smuzhiyun 0x0000003f, 1273*4882a593Smuzhiyun 0x00000041, 1274*4882a593Smuzhiyun 0x0000006b, 1275*4882a593Smuzhiyun 0x0000006d, 1276*4882a593Smuzhiyun 0x00000073, 1277*4882a593Smuzhiyun 0x00000075, 1278*4882a593Smuzhiyun 0x0000007b, 1279*4882a593Smuzhiyun 0x0000007d, 1280*4882a593Smuzhiyun 0x0000007f, 1281*4882a593Smuzhiyun 0x00000081, 1282*4882a593Smuzhiyun 0x00000087, 1283*4882a593Smuzhiyun 0x0000008b, 1284*4882a593Smuzhiyun 0x0000008d, 1285*4882a593Smuzhiyun 0x0000008f, 1286*4882a593Smuzhiyun 0x00000095, 1287*4882a593Smuzhiyun 0x00000097, 1288*4882a593Smuzhiyun 0x00000099, 1289*4882a593Smuzhiyun 0x0000009b, 1290*4882a593Smuzhiyun 0x000000a1, 1291*4882a593Smuzhiyun 0x000000a5, 1292*4882a593Smuzhiyun 0x000000af, 1293*4882a593Smuzhiyun 0x000000b3, 1294*4882a593Smuzhiyun 0x000000b5, 1295*4882a593Smuzhiyun 0x000000b7, 1296*4882a593Smuzhiyun 0x000000bd, 1297*4882a593Smuzhiyun 0x000000c1, 1298*4882a593Smuzhiyun 0x000000c3, 1299*4882a593Smuzhiyun 0x000000c5, 1300*4882a593Smuzhiyun 0x000000cd, 1301*4882a593Smuzhiyun 0x000000d1, 1302*4882a593Smuzhiyun 0x000000d3, 1303*4882a593Smuzhiyun 0x000000d9, 1304*4882a593Smuzhiyun 0x000000db, 1305*4882a593Smuzhiyun 0x000000dd, 1306*4882a593Smuzhiyun 0x000000df, 1307*4882a593Smuzhiyun 0x000000e5, 1308*4882a593Smuzhiyun 0x000000ef, 1309*4882a593Smuzhiyun 0x000000f9, 1310*4882a593Smuzhiyun 0x000000fd, 1311*4882a593Smuzhiyun 0x000000ff, 1312*4882a593Smuzhiyun 0x00000101, 1313*4882a593Smuzhiyun 0x00000103, 1314*4882a593Smuzhiyun 0x00000109, 1315*4882a593Smuzhiyun 0x0000010d, 1316*4882a593Smuzhiyun 0x00000117, 1317*4882a593Smuzhiyun 0x0000011f, 1318*4882a593Smuzhiyun 0x00000121, 1319*4882a593Smuzhiyun}; 1320*4882a593Smuzhiyun 1321*4882a593Smuzhiyunstatic struct { 1322*4882a593Smuzhiyun u32 offset; 1323*4882a593Smuzhiyun void *address; 1324*4882a593Smuzhiyun} EXTERNAL_PATCHES[] __attribute((unused)) = { 1325*4882a593Smuzhiyun}; 1326*4882a593Smuzhiyun 1327*4882a593Smuzhiyunstatic u32 INSTRUCTIONS __attribute((unused)) = 149; 1328*4882a593Smuzhiyunstatic u32 PATCHES __attribute((unused)) = 56; 1329*4882a593Smuzhiyunstatic u32 EXTERNAL_PATCHES_LEN __attribute((unused)) = 0; 1330