1330 lines · plain
1/* DO NOT EDIT - Generated automatically by script_asm.pl */2static u32 SCRIPT[] = {3/*4; Script for the NCR (or symbios) 53c700 and 53c700-66 chip5;6; Copyright (C) 2001 James.Bottomley@HansenPartnership.com7;;-----------------------------------------------------------------------------8;; 9;; This program is free software; you can redistribute it and/or modify10;; it under the terms of the GNU General Public License as published by11;; the Free Software Foundation; either version 2 of the License, or12;; (at your option) any later version.13;;14;; This program is distributed in the hope that it will be useful,15;; but WITHOUT ANY WARRANTY; without even the implied warranty of16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the17;; GNU General Public License for more details.18;;19;; You should have received a copy of the GNU General Public License20;; along with this program; if not, write to the Free Software21;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.22;;23;;-----------------------------------------------------------------------------24;25; This script is designed to be modified for the particular command in26; operation. The particular variables pertaining to the commands are:27;28ABSOLUTE Device_ID = 0 ; ID of target for command29ABSOLUTE MessageCount = 0 ; Number of bytes in message30ABSOLUTE MessageLocation = 0 ; Addr of message31ABSOLUTE CommandCount = 0 ; Number of bytes in command32ABSOLUTE CommandAddress = 0 ; Addr of Command33ABSOLUTE StatusAddress = 0 ; Addr to receive status return34ABSOLUTE ReceiveMsgAddress = 0 ; Addr to receive msg35;36; This is the magic component for handling scatter-gather. Each of the37; SG components is preceded by a script fragment which moves the38; necessary amount of data and jumps to the next SG segment. The final39; SG segment jumps back to . However, this address is the first SG script40; segment.41;42ABSOLUTE SGScriptStartAddress = 043 44; The following represent status interrupts we use 3 hex digits for45; this: 0xPRS where 46 47; P:48ABSOLUTE AFTER_SELECTION = 0x10049ABSOLUTE BEFORE_CMD = 0x20050ABSOLUTE AFTER_CMD = 0x30051ABSOLUTE AFTER_STATUS = 0x40052ABSOLUTE AFTER_DATA_IN = 0x50053ABSOLUTE AFTER_DATA_OUT = 0x60054ABSOLUTE DURING_DATA_IN = 0x70055 56; R:57ABSOLUTE NOT_MSG_OUT = 0x1058ABSOLUTE UNEXPECTED_PHASE = 0x2059ABSOLUTE NOT_MSG_IN = 0x3060ABSOLUTE UNEXPECTED_MSG = 0x4061ABSOLUTE MSG_IN = 0x5062ABSOLUTE SDTR_MSG_R = 0x6063ABSOLUTE REJECT_MSG_R = 0x7064ABSOLUTE DISCONNECT = 0x8065ABSOLUTE MSG_OUT = 0x9066ABSOLUTE WDTR_MSG_R = 0xA067 68; S:69ABSOLUTE GOOD_STATUS = 0x170 71; Combinations, since the script assembler can't process |72ABSOLUTE NOT_MSG_OUT_AFTER_SELECTION = 0x11073ABSOLUTE UNEXPECTED_PHASE_BEFORE_CMD = 0x22074ABSOLUTE UNEXPECTED_PHASE_AFTER_CMD = 0x32075ABSOLUTE NOT_MSG_IN_AFTER_STATUS = 0x43076ABSOLUTE GOOD_STATUS_AFTER_STATUS = 0x40177ABSOLUTE UNEXPECTED_PHASE_AFTER_DATA_IN = 0x52078ABSOLUTE UNEXPECTED_PHASE_AFTER_DATA_OUT = 0x62079ABSOLUTE UNEXPECTED_MSG_BEFORE_CMD = 0x24080ABSOLUTE MSG_IN_BEFORE_CMD = 0x25081ABSOLUTE MSG_IN_AFTER_CMD = 0x35082ABSOLUTE SDTR_MSG_BEFORE_CMD = 0x26083ABSOLUTE REJECT_MSG_BEFORE_CMD = 0x27084ABSOLUTE DISCONNECT_AFTER_CMD = 0x38085ABSOLUTE SDTR_MSG_AFTER_CMD = 0x36086ABSOLUTE WDTR_MSG_AFTER_CMD = 0x3A087ABSOLUTE MSG_IN_AFTER_STATUS = 0x44088ABSOLUTE DISCONNECT_AFTER_DATA = 0x58089ABSOLUTE MSG_IN_AFTER_DATA_IN = 0x55090ABSOLUTE MSG_IN_AFTER_DATA_OUT = 0x65091ABSOLUTE MSG_OUT_AFTER_DATA_IN = 0x59092ABSOLUTE DATA_IN_AFTER_DATA_IN = 0x5a093ABSOLUTE MSG_IN_DURING_DATA_IN = 0x75094ABSOLUTE DISCONNECT_DURING_DATA = 0x78095 96;97; Other interrupt conditions98; 99ABSOLUTE RESELECTED_DURING_SELECTION = 0x1000100ABSOLUTE COMPLETED_SELECTION_AS_TARGET = 0x1001101ABSOLUTE RESELECTION_IDENTIFIED = 0x1003102;103; Fatal interrupt conditions. If you add to this, also add to the104; array of corresponding messages105;106ABSOLUTE FATAL = 0x2000107ABSOLUTE FATAL_UNEXPECTED_RESELECTION_MSG = 0x2000108ABSOLUTE FATAL_SEND_MSG = 0x2001109ABSOLUTE FATAL_NOT_MSG_IN_AFTER_SELECTION = 0x2002110ABSOLUTE FATAL_ILLEGAL_MSG_LENGTH = 0x2003111 112ABSOLUTE DEBUG_INTERRUPT = 0x3000113ABSOLUTE DEBUG_INTERRUPT1 = 0x3001114ABSOLUTE DEBUG_INTERRUPT2 = 0x3002115ABSOLUTE DEBUG_INTERRUPT3 = 0x3003116ABSOLUTE DEBUG_INTERRUPT4 = 0x3004117ABSOLUTE DEBUG_INTERRUPT5 = 0x3005118ABSOLUTE DEBUG_INTERRUPT6 = 0x3006119 120 121;122; SCSI Messages we interpret in the script123;124ABSOLUTE COMMAND_COMPLETE_MSG = 0x00125ABSOLUTE EXTENDED_MSG = 0x01126ABSOLUTE SDTR_MSG = 0x01127ABSOLUTE SAVE_DATA_PTRS_MSG = 0x02128ABSOLUTE RESTORE_DATA_PTRS_MSG = 0x03129ABSOLUTE WDTR_MSG = 0x03130ABSOLUTE DISCONNECT_MSG = 0x04131ABSOLUTE REJECT_MSG = 0x07132ABSOLUTE PARITY_ERROR_MSG = 0x09133ABSOLUTE SIMPLE_TAG_MSG = 0x20134ABSOLUTE IDENTIFY_MSG = 0x80135ABSOLUTE IDENTIFY_MSG_MASK = 0x7F136ABSOLUTE TWO_BYTE_MSG = 0x20137ABSOLUTE TWO_BYTE_MSG_MASK = 0x0F138 139; This is where the script begins140 141ENTRY StartUp142 143StartUp:144 SELECT ATN Device_ID, Reselect145 146at 0x00000000 : */ 0x41000000,0x00000020,147/*148 JUMP Finish, WHEN STATUS149 150at 0x00000002 : */ 0x830b0000,0x00000460,151/*152 JUMP SendIdentifyMsg, IF MSG_OUT153 154at 0x00000004 : */ 0x860a0000,0x000001b0,155/*156 INT NOT_MSG_OUT_AFTER_SELECTION157 158at 0x00000006 : */ 0x98080000,0x00000110,159/*160 161Reselect:162 WAIT RESELECT SelectedAsTarget163 164at 0x00000008 : */ 0x50000000,0x00000058,165/*166 INT RESELECTED_DURING_SELECTION, WHEN MSG_IN167 168at 0x0000000a : */ 0x9f0b0000,0x00001000,169/*170 INT FATAL_NOT_MSG_IN_AFTER_SELECTION171 172at 0x0000000c : */ 0x98080000,0x00002002,173/*174 175 ENTRY GetReselectionData176GetReselectionData:177 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN178 179at 0x0000000e : */ 0x0f000001,0x00000000,180/*181 INT RESELECTION_IDENTIFIED182 183at 0x00000010 : */ 0x98080000,0x00001003,184/*185 186 ENTRY GetReselectionWithTag187GetReselectionWithTag:188 MOVE 3, ReceiveMsgAddress, WHEN MSG_IN189 190at 0x00000012 : */ 0x0f000003,0x00000000,191/*192 INT RESELECTION_IDENTIFIED193 194at 0x00000014 : */ 0x98080000,0x00001003,195/*196 197 ENTRY SelectedAsTarget198SelectedAsTarget:199; Basically tell the selecting device that there's nothing here200 SET TARGET201 202at 0x00000016 : */ 0x58000200,0x00000000,203/*204 DISCONNECT205 206at 0x00000018 : */ 0x48000000,0x00000000,207/*208 CLEAR TARGET209 210at 0x0000001a : */ 0x60000200,0x00000000,211/*212 INT COMPLETED_SELECTION_AS_TARGET213 214at 0x0000001c : */ 0x98080000,0x00001001,215/*216;217; These are the messaging entries218;219; Send a message. Message count should be correctly patched220 ENTRY SendMessage221SendMessage:222 MOVE MessageCount, MessageLocation, WHEN MSG_OUT223 224at 0x0000001e : */ 0x0e000000,0x00000000,225/*226ResumeSendMessage:227 RETURN, WHEN NOT MSG_OUT228 229at 0x00000020 : */ 0x96030000,0x00000000,230/*231 INT FATAL_SEND_MSG232 233at 0x00000022 : */ 0x98080000,0x00002001,234/*235 236 ENTRY SendMessagePhaseMismatch237SendMessagePhaseMismatch:238 CLEAR ACK239 240at 0x00000024 : */ 0x60000040,0x00000000,241/*242 JUMP ResumeSendMessage243 244at 0x00000026 : */ 0x80080000,0x00000080,245/*246;247; Receive a message. Need to identify the message to248; receive it correctly249 ENTRY ReceiveMessage250ReceiveMessage:251 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN252 253at 0x00000028 : */ 0x0f000001,0x00000000,254/*255;256; Use this entry if we've just tried to look at the first byte257; of the message and want to process it further258ProcessReceiveMessage:259 JUMP ReceiveExtendedMessage, IF EXTENDED_MSG260 261at 0x0000002a : */ 0x800c0001,0x000000d0,262/*263 RETURN, IF NOT TWO_BYTE_MSG, AND MASK TWO_BYTE_MSG_MASK264 265at 0x0000002c : */ 0x90040f20,0x00000000,266/*267 CLEAR ACK268 269at 0x0000002e : */ 0x60000040,0x00000000,270/*271 MOVE 1, ReceiveMsgAddress + 1, WHEN MSG_IN272 273at 0x00000030 : */ 0x0f000001,0x00000001,274/*275 RETURN276 277at 0x00000032 : */ 0x90080000,0x00000000,278/*279ReceiveExtendedMessage:280 CLEAR ACK281 282at 0x00000034 : */ 0x60000040,0x00000000,283/*284 MOVE 1, ReceiveMsgAddress + 1, WHEN MSG_IN285 286at 0x00000036 : */ 0x0f000001,0x00000001,287/*288 JUMP Receive1Byte, IF 0x01289 290at 0x00000038 : */ 0x800c0001,0x00000110,291/*292 JUMP Receive2Byte, IF 0x02293 294at 0x0000003a : */ 0x800c0002,0x00000128,295/*296 JUMP Receive3Byte, IF 0x03297 298at 0x0000003c : */ 0x800c0003,0x00000140,299/*300 JUMP Receive4Byte, IF 0x04301 302at 0x0000003e : */ 0x800c0004,0x00000158,303/*304 JUMP Receive5Byte, IF 0x05305 306at 0x00000040 : */ 0x800c0005,0x00000170,307/*308 INT FATAL_ILLEGAL_MSG_LENGTH309 310at 0x00000042 : */ 0x98080000,0x00002003,311/*312Receive1Byte:313 CLEAR ACK314 315at 0x00000044 : */ 0x60000040,0x00000000,316/*317 MOVE 1, ReceiveMsgAddress + 2, WHEN MSG_IN318 319at 0x00000046 : */ 0x0f000001,0x00000002,320/*321 RETURN322 323at 0x00000048 : */ 0x90080000,0x00000000,324/*325Receive2Byte:326 CLEAR ACK327 328at 0x0000004a : */ 0x60000040,0x00000000,329/*330 MOVE 2, ReceiveMsgAddress + 2, WHEN MSG_IN331 332at 0x0000004c : */ 0x0f000002,0x00000002,333/*334 RETURN335 336at 0x0000004e : */ 0x90080000,0x00000000,337/*338Receive3Byte:339 CLEAR ACK340 341at 0x00000050 : */ 0x60000040,0x00000000,342/*343 MOVE 3, ReceiveMsgAddress + 2, WHEN MSG_IN344 345at 0x00000052 : */ 0x0f000003,0x00000002,346/*347 RETURN348 349at 0x00000054 : */ 0x90080000,0x00000000,350/*351Receive4Byte:352 CLEAR ACK353 354at 0x00000056 : */ 0x60000040,0x00000000,355/*356 MOVE 4, ReceiveMsgAddress + 2, WHEN MSG_IN357 358at 0x00000058 : */ 0x0f000004,0x00000002,359/*360 RETURN361 362at 0x0000005a : */ 0x90080000,0x00000000,363/*364Receive5Byte:365 CLEAR ACK366 367at 0x0000005c : */ 0x60000040,0x00000000,368/*369 MOVE 5, ReceiveMsgAddress + 2, WHEN MSG_IN370 371at 0x0000005e : */ 0x0f000005,0x00000002,372/*373 RETURN374 375at 0x00000060 : */ 0x90080000,0x00000000,376/*377;378; Come here from the message processor to ignore the message379;380 ENTRY IgnoreMessage381IgnoreMessage:382 CLEAR ACK383 384at 0x00000062 : */ 0x60000040,0x00000000,385/*386 RETURN387 388at 0x00000064 : */ 0x90080000,0x00000000,389/*390;391; Come here to send a reply to a message392;393 ENTRY SendMessageWithATN394SendMessageWithATN:395 SET ATN396 397at 0x00000066 : */ 0x58000008,0x00000000,398/*399 CLEAR ACK400 401at 0x00000068 : */ 0x60000040,0x00000000,402/*403 JUMP SendMessage404 405at 0x0000006a : */ 0x80080000,0x00000078,406/*407 408SendIdentifyMsg:409 CALL SendMessage410 411at 0x0000006c : */ 0x88080000,0x00000078,412/*413 CLEAR ATN414 415at 0x0000006e : */ 0x60000008,0x00000000,416/*417 418IgnoreMsgBeforeCommand:419 CLEAR ACK420 421at 0x00000070 : */ 0x60000040,0x00000000,422/*423 ENTRY SendCommand424SendCommand:425 JUMP Finish, WHEN STATUS426 427at 0x00000072 : */ 0x830b0000,0x00000460,428/*429 JUMP MsgInBeforeCommand, IF MSG_IN430 431at 0x00000074 : */ 0x870a0000,0x000002c0,432/*433 INT UNEXPECTED_PHASE_BEFORE_CMD, IF NOT CMD434 435at 0x00000076 : */ 0x9a020000,0x00000220,436/*437 MOVE CommandCount, CommandAddress, WHEN CMD438 439at 0x00000078 : */ 0x0a000000,0x00000000,440/*441ResumeSendCommand:442 JUMP Finish, WHEN STATUS443 444at 0x0000007a : */ 0x830b0000,0x00000460,445/*446 JUMP MsgInAfterCmd, IF MSG_IN447 448at 0x0000007c : */ 0x870a0000,0x00000248,449/*450 JUMP DataIn, IF DATA_IN451 452at 0x0000007e : */ 0x810a0000,0x000002f8,453/*454 JUMP DataOut, IF DATA_OUT455 456at 0x00000080 : */ 0x800a0000,0x00000338,457/*458 INT UNEXPECTED_PHASE_AFTER_CMD459 460at 0x00000082 : */ 0x98080000,0x00000320,461/*462 463IgnoreMsgDuringData:464 CLEAR ACK465 466at 0x00000084 : */ 0x60000040,0x00000000,467/*468 ; fall through to MsgInDuringData469 470Entry MsgInDuringData471MsgInDuringData:472;473; Could be we have nothing more to transfer474;475 JUMP Finish, WHEN STATUS476 477at 0x00000086 : */ 0x830b0000,0x00000460,478/*479 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN480 481at 0x00000088 : */ 0x0f000001,0x00000000,482/*483 JUMP DisconnectDuringDataIn, IF DISCONNECT_MSG484 485at 0x0000008a : */ 0x800c0004,0x00000398,486/*487 JUMP IgnoreMsgDuringData, IF SAVE_DATA_PTRS_MSG488 489at 0x0000008c : */ 0x800c0002,0x00000210,490/*491 JUMP IgnoreMsgDuringData, IF RESTORE_DATA_PTRS_MSG492 493at 0x0000008e : */ 0x800c0003,0x00000210,494/*495 INT MSG_IN_DURING_DATA_IN496 497at 0x00000090 : */ 0x98080000,0x00000750,498/*499 500MsgInAfterCmd:501 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN502 503at 0x00000092 : */ 0x0f000001,0x00000000,504/*505 JUMP DisconnectAfterCmd, IF DISCONNECT_MSG506 507at 0x00000094 : */ 0x800c0004,0x00000298,508/*509 JUMP IgnoreMsgInAfterCmd, IF SAVE_DATA_PTRS_MSG510 511at 0x00000096 : */ 0x800c0002,0x00000288,512/*513 JUMP IgnoreMsgInAfterCmd, IF RESTORE_DATA_PTRS_MSG514 515at 0x00000098 : */ 0x800c0003,0x00000288,516/*517 CALL ProcessReceiveMessage518 519at 0x0000009a : */ 0x88080000,0x000000a8,520/*521 INT MSG_IN_AFTER_CMD522 523at 0x0000009c : */ 0x98080000,0x00000350,524/*525 CLEAR ACK526 527at 0x0000009e : */ 0x60000040,0x00000000,528/*529 JUMP ResumeSendCommand530 531at 0x000000a0 : */ 0x80080000,0x000001e8,532/*533 534IgnoreMsgInAfterCmd:535 CLEAR ACK536 537at 0x000000a2 : */ 0x60000040,0x00000000,538/*539 JUMP ResumeSendCommand540 541at 0x000000a4 : */ 0x80080000,0x000001e8,542/*543 544DisconnectAfterCmd:545 CLEAR ACK546 547at 0x000000a6 : */ 0x60000040,0x00000000,548/*549 WAIT DISCONNECT550 551at 0x000000a8 : */ 0x48000000,0x00000000,552/*553 ENTRY Disconnect1554Disconnect1:555 INT DISCONNECT_AFTER_CMD556 557at 0x000000aa : */ 0x98080000,0x00000380,558/*559 ENTRY Disconnect2560Disconnect2:561; We return here after a reselection562 CLEAR ACK563 564at 0x000000ac : */ 0x60000040,0x00000000,565/*566 JUMP ResumeSendCommand567 568at 0x000000ae : */ 0x80080000,0x000001e8,569/*570 571MsgInBeforeCommand:572 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN573 574at 0x000000b0 : */ 0x0f000001,0x00000000,575/*576 JUMP IgnoreMsgBeforeCommand, IF SAVE_DATA_PTRS_MSG577 578at 0x000000b2 : */ 0x800c0002,0x000001c0,579/*580 JUMP IgnoreMsgBeforeCommand, IF RESTORE_DATA_PTRS_MSG581 582at 0x000000b4 : */ 0x800c0003,0x000001c0,583/*584 CALL ProcessReceiveMessage585 586at 0x000000b6 : */ 0x88080000,0x000000a8,587/*588 INT MSG_IN_BEFORE_CMD589 590at 0x000000b8 : */ 0x98080000,0x00000250,591/*592 CLEAR ACK593 594at 0x000000ba : */ 0x60000040,0x00000000,595/*596 JUMP SendCommand597 598at 0x000000bc : */ 0x80080000,0x000001c8,599/*600 601DataIn:602 CALL SGScriptStartAddress603 604at 0x000000be : */ 0x88080000,0x00000000,605/*606ResumeDataIn:607 JUMP Finish, WHEN STATUS608 609at 0x000000c0 : */ 0x830b0000,0x00000460,610/*611 JUMP MsgInAfterDataIn, IF MSG_IN612 613at 0x000000c2 : */ 0x870a0000,0x00000358,614/*615 JUMP DataInAfterDataIn, if DATA_IN616 617at 0x000000c4 : */ 0x810a0000,0x00000328,618/*619 INT MSG_OUT_AFTER_DATA_IN, if MSG_OUT620 621at 0x000000c6 : */ 0x9e0a0000,0x00000590,622/*623 INT UNEXPECTED_PHASE_AFTER_DATA_IN624 625at 0x000000c8 : */ 0x98080000,0x00000520,626/*627 628DataInAfterDataIn:629 INT DATA_IN_AFTER_DATA_IN630 631at 0x000000ca : */ 0x98080000,0x000005a0,632/*633 JUMP ResumeDataIn634 635at 0x000000cc : */ 0x80080000,0x00000300,636/*637 638DataOut:639 CALL SGScriptStartAddress640 641at 0x000000ce : */ 0x88080000,0x00000000,642/*643ResumeDataOut:644 JUMP Finish, WHEN STATUS645 646at 0x000000d0 : */ 0x830b0000,0x00000460,647/*648 JUMP MsgInAfterDataOut, IF MSG_IN649 650at 0x000000d2 : */ 0x870a0000,0x000003e8,651/*652 INT UNEXPECTED_PHASE_AFTER_DATA_OUT653 654at 0x000000d4 : */ 0x98080000,0x00000620,655/*656 657MsgInAfterDataIn:658 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN659 660at 0x000000d6 : */ 0x0f000001,0x00000000,661/*662 JUMP DisconnectAfterDataIn, IF DISCONNECT_MSG663 664at 0x000000d8 : */ 0x800c0004,0x000003c0,665/*666 JUMP IgnoreMsgAfterData, IF SAVE_DATA_PTRS_MSG667 668at 0x000000da : */ 0x800c0002,0x00000428,669/*670 JUMP IgnoreMsgAfterData, IF RESTORE_DATA_PTRS_MSG671 672at 0x000000dc : */ 0x800c0003,0x00000428,673/*674 CALL ProcessReceiveMessage675 676at 0x000000de : */ 0x88080000,0x000000a8,677/*678 INT MSG_IN_AFTER_DATA_IN679 680at 0x000000e0 : */ 0x98080000,0x00000550,681/*682 CLEAR ACK683 684at 0x000000e2 : */ 0x60000040,0x00000000,685/*686 JUMP ResumeDataIn687 688at 0x000000e4 : */ 0x80080000,0x00000300,689/*690 691DisconnectDuringDataIn:692 CLEAR ACK693 694at 0x000000e6 : */ 0x60000040,0x00000000,695/*696 WAIT DISCONNECT697 698at 0x000000e8 : */ 0x48000000,0x00000000,699/*700 ENTRY Disconnect3701Disconnect3:702 INT DISCONNECT_DURING_DATA703 704at 0x000000ea : */ 0x98080000,0x00000780,705/*706 ENTRY Disconnect4707Disconnect4:708; we return here after a reselection709 CLEAR ACK710 711at 0x000000ec : */ 0x60000040,0x00000000,712/*713 JUMP ResumeSendCommand714 715at 0x000000ee : */ 0x80080000,0x000001e8,716/*717 718 719DisconnectAfterDataIn:720 CLEAR ACK721 722at 0x000000f0 : */ 0x60000040,0x00000000,723/*724 WAIT DISCONNECT725 726at 0x000000f2 : */ 0x48000000,0x00000000,727/*728 ENTRY Disconnect5729Disconnect5:730 INT DISCONNECT_AFTER_DATA731 732at 0x000000f4 : */ 0x98080000,0x00000580,733/*734 ENTRY Disconnect6735Disconnect6:736; we return here after a reselection737 CLEAR ACK738 739at 0x000000f6 : */ 0x60000040,0x00000000,740/*741 JUMP ResumeDataIn742 743at 0x000000f8 : */ 0x80080000,0x00000300,744/*745 746MsgInAfterDataOut:747 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN748 749at 0x000000fa : */ 0x0f000001,0x00000000,750/*751 JUMP DisconnectAfterDataOut, if DISCONNECT_MSG752 753at 0x000000fc : */ 0x800c0004,0x00000438,754/*755 JUMP IgnoreMsgAfterData, IF SAVE_DATA_PTRS_MSG756 757at 0x000000fe : */ 0x800c0002,0x00000428,758/*759 JUMP IgnoreMsgAfterData, IF RESTORE_DATA_PTRS_MSG760 761at 0x00000100 : */ 0x800c0003,0x00000428,762/*763 CALL ProcessReceiveMessage764 765at 0x00000102 : */ 0x88080000,0x000000a8,766/*767 INT MSG_IN_AFTER_DATA_OUT768 769at 0x00000104 : */ 0x98080000,0x00000650,770/*771 CLEAR ACK772 773at 0x00000106 : */ 0x60000040,0x00000000,774/*775 JUMP ResumeDataOut776 777at 0x00000108 : */ 0x80080000,0x00000340,778/*779 780IgnoreMsgAfterData:781 CLEAR ACK782 783at 0x0000010a : */ 0x60000040,0x00000000,784/*785; Data in and out do the same thing on resume, so pick one786 JUMP ResumeDataIn787 788at 0x0000010c : */ 0x80080000,0x00000300,789/*790 791DisconnectAfterDataOut:792 CLEAR ACK793 794at 0x0000010e : */ 0x60000040,0x00000000,795/*796 WAIT DISCONNECT797 798at 0x00000110 : */ 0x48000000,0x00000000,799/*800 ENTRY Disconnect7801Disconnect7:802 INT DISCONNECT_AFTER_DATA803 804at 0x00000112 : */ 0x98080000,0x00000580,805/*806 ENTRY Disconnect8807Disconnect8:808; we return here after a reselection809 CLEAR ACK810 811at 0x00000114 : */ 0x60000040,0x00000000,812/*813 JUMP ResumeDataOut814 815at 0x00000116 : */ 0x80080000,0x00000340,816/*817 818Finish:819 MOVE 1, StatusAddress, WHEN STATUS820 821at 0x00000118 : */ 0x0b000001,0x00000000,822/*823 INT NOT_MSG_IN_AFTER_STATUS, WHEN NOT MSG_IN824 825at 0x0000011a : */ 0x9f030000,0x00000430,826/*827 MOVE 1, ReceiveMsgAddress, WHEN MSG_IN828 829at 0x0000011c : */ 0x0f000001,0x00000000,830/*831 JUMP FinishCommandComplete, IF COMMAND_COMPLETE_MSG832 833at 0x0000011e : */ 0x800c0000,0x00000490,834/*835 CALL ProcessReceiveMessage836 837at 0x00000120 : */ 0x88080000,0x000000a8,838/*839 INT MSG_IN_AFTER_STATUS840 841at 0x00000122 : */ 0x98080000,0x00000440,842/*843 ENTRY FinishCommandComplete844FinishCommandComplete:845 CLEAR ACK846 847at 0x00000124 : */ 0x60000040,0x00000000,848/*849 WAIT DISCONNECT850 851at 0x00000126 : */ 0x48000000,0x00000000,852/*853 ENTRY Finish1854Finish1:855 INT GOOD_STATUS_AFTER_STATUS856 857at 0x00000128 : */ 0x98080000,0x00000401,858};859 860#define A_AFTER_CMD 0x00000300861static u32 A_AFTER_CMD_used[] __attribute((unused)) = {862};863 864#define A_AFTER_DATA_IN 0x00000500865static u32 A_AFTER_DATA_IN_used[] __attribute((unused)) = {866};867 868#define A_AFTER_DATA_OUT 0x00000600869static u32 A_AFTER_DATA_OUT_used[] __attribute((unused)) = {870};871 872#define A_AFTER_SELECTION 0x00000100873static u32 A_AFTER_SELECTION_used[] __attribute((unused)) = {874};875 876#define A_AFTER_STATUS 0x00000400877static u32 A_AFTER_STATUS_used[] __attribute((unused)) = {878};879 880#define A_BEFORE_CMD 0x00000200881static u32 A_BEFORE_CMD_used[] __attribute((unused)) = {882};883 884#define A_COMMAND_COMPLETE_MSG 0x00000000885static u32 A_COMMAND_COMPLETE_MSG_used[] __attribute((unused)) = {886 0x0000011e,887};888 889#define A_COMPLETED_SELECTION_AS_TARGET 0x00001001890static u32 A_COMPLETED_SELECTION_AS_TARGET_used[] __attribute((unused)) = {891 0x0000001d,892};893 894#define A_CommandAddress 0x00000000895static u32 A_CommandAddress_used[] __attribute((unused)) = {896 0x00000079,897};898 899#define A_CommandCount 0x00000000900static u32 A_CommandCount_used[] __attribute((unused)) = {901 0x00000078,902};903 904#define A_DATA_IN_AFTER_DATA_IN 0x000005a0905static u32 A_DATA_IN_AFTER_DATA_IN_used[] __attribute((unused)) = {906 0x000000cb,907};908 909#define A_DEBUG_INTERRUPT 0x00003000910static u32 A_DEBUG_INTERRUPT_used[] __attribute((unused)) = {911};912 913#define A_DEBUG_INTERRUPT1 0x00003001914static u32 A_DEBUG_INTERRUPT1_used[] __attribute((unused)) = {915};916 917#define A_DEBUG_INTERRUPT2 0x00003002918static u32 A_DEBUG_INTERRUPT2_used[] __attribute((unused)) = {919};920 921#define A_DEBUG_INTERRUPT3 0x00003003922static u32 A_DEBUG_INTERRUPT3_used[] __attribute((unused)) = {923};924 925#define A_DEBUG_INTERRUPT4 0x00003004926static u32 A_DEBUG_INTERRUPT4_used[] __attribute((unused)) = {927};928 929#define A_DEBUG_INTERRUPT5 0x00003005930static u32 A_DEBUG_INTERRUPT5_used[] __attribute((unused)) = {931};932 933#define A_DEBUG_INTERRUPT6 0x00003006934static u32 A_DEBUG_INTERRUPT6_used[] __attribute((unused)) = {935};936 937#define A_DISCONNECT 0x00000080938static u32 A_DISCONNECT_used[] __attribute((unused)) = {939};940 941#define A_DISCONNECT_AFTER_CMD 0x00000380942static u32 A_DISCONNECT_AFTER_CMD_used[] __attribute((unused)) = {943 0x000000ab,944};945 946#define A_DISCONNECT_AFTER_DATA 0x00000580947static u32 A_DISCONNECT_AFTER_DATA_used[] __attribute((unused)) = {948 0x000000f5,949 0x00000113,950};951 952#define A_DISCONNECT_DURING_DATA 0x00000780953static u32 A_DISCONNECT_DURING_DATA_used[] __attribute((unused)) = {954 0x000000eb,955};956 957#define A_DISCONNECT_MSG 0x00000004958static u32 A_DISCONNECT_MSG_used[] __attribute((unused)) = {959 0x0000008a,960 0x00000094,961 0x000000d8,962 0x000000fc,963};964 965#define A_DURING_DATA_IN 0x00000700966static u32 A_DURING_DATA_IN_used[] __attribute((unused)) = {967};968 969#define A_Device_ID 0x00000000970static u32 A_Device_ID_used[] __attribute((unused)) = {971 0x00000000,972};973 974#define A_EXTENDED_MSG 0x00000001975static u32 A_EXTENDED_MSG_used[] __attribute((unused)) = {976 0x0000002a,977};978 979#define A_FATAL 0x00002000980static u32 A_FATAL_used[] __attribute((unused)) = {981};982 983#define A_FATAL_ILLEGAL_MSG_LENGTH 0x00002003984static u32 A_FATAL_ILLEGAL_MSG_LENGTH_used[] __attribute((unused)) = {985 0x00000043,986};987 988#define A_FATAL_NOT_MSG_IN_AFTER_SELECTION 0x00002002989static u32 A_FATAL_NOT_MSG_IN_AFTER_SELECTION_used[] __attribute((unused)) = {990 0x0000000d,991};992 993#define A_FATAL_SEND_MSG 0x00002001994static u32 A_FATAL_SEND_MSG_used[] __attribute((unused)) = {995 0x00000023,996};997 998#define A_FATAL_UNEXPECTED_RESELECTION_MSG 0x00002000999static u32 A_FATAL_UNEXPECTED_RESELECTION_MSG_used[] __attribute((unused)) = {1000};1001 1002#define A_GOOD_STATUS 0x000000011003static u32 A_GOOD_STATUS_used[] __attribute((unused)) = {1004};1005 1006#define A_GOOD_STATUS_AFTER_STATUS 0x000004011007static u32 A_GOOD_STATUS_AFTER_STATUS_used[] __attribute((unused)) = {1008 0x00000129,1009};1010 1011#define A_IDENTIFY_MSG 0x000000801012static u32 A_IDENTIFY_MSG_used[] __attribute((unused)) = {1013};1014 1015#define A_IDENTIFY_MSG_MASK 0x0000007f1016static u32 A_IDENTIFY_MSG_MASK_used[] __attribute((unused)) = {1017};1018 1019#define A_MSG_IN 0x000000501020static u32 A_MSG_IN_used[] __attribute((unused)) = {1021};1022 1023#define A_MSG_IN_AFTER_CMD 0x000003501024static u32 A_MSG_IN_AFTER_CMD_used[] __attribute((unused)) = {1025 0x0000009d,1026};1027 1028#define A_MSG_IN_AFTER_DATA_IN 0x000005501029static u32 A_MSG_IN_AFTER_DATA_IN_used[] __attribute((unused)) = {1030 0x000000e1,1031};1032 1033#define A_MSG_IN_AFTER_DATA_OUT 0x000006501034static u32 A_MSG_IN_AFTER_DATA_OUT_used[] __attribute((unused)) = {1035 0x00000105,1036};1037 1038#define A_MSG_IN_AFTER_STATUS 0x000004401039static u32 A_MSG_IN_AFTER_STATUS_used[] __attribute((unused)) = {1040 0x00000123,1041};1042 1043#define A_MSG_IN_BEFORE_CMD 0x000002501044static u32 A_MSG_IN_BEFORE_CMD_used[] __attribute((unused)) = {1045 0x000000b9,1046};1047 1048#define A_MSG_IN_DURING_DATA_IN 0x000007501049static u32 A_MSG_IN_DURING_DATA_IN_used[] __attribute((unused)) = {1050 0x00000091,1051};1052 1053#define A_MSG_OUT 0x000000901054static u32 A_MSG_OUT_used[] __attribute((unused)) = {1055};1056 1057#define A_MSG_OUT_AFTER_DATA_IN 0x000005901058static u32 A_MSG_OUT_AFTER_DATA_IN_used[] __attribute((unused)) = {1059 0x000000c7,1060};1061 1062#define A_MessageCount 0x000000001063static u32 A_MessageCount_used[] __attribute((unused)) = {1064 0x0000001e,1065};1066 1067#define A_MessageLocation 0x000000001068static u32 A_MessageLocation_used[] __attribute((unused)) = {1069 0x0000001f,1070};1071 1072#define A_NOT_MSG_IN 0x000000301073static u32 A_NOT_MSG_IN_used[] __attribute((unused)) = {1074};1075 1076#define A_NOT_MSG_IN_AFTER_STATUS 0x000004301077static u32 A_NOT_MSG_IN_AFTER_STATUS_used[] __attribute((unused)) = {1078 0x0000011b,1079};1080 1081#define A_NOT_MSG_OUT 0x000000101082static u32 A_NOT_MSG_OUT_used[] __attribute((unused)) = {1083};1084 1085#define A_NOT_MSG_OUT_AFTER_SELECTION 0x000001101086static u32 A_NOT_MSG_OUT_AFTER_SELECTION_used[] __attribute((unused)) = {1087 0x00000007,1088};1089 1090#define A_PARITY_ERROR_MSG 0x000000091091static u32 A_PARITY_ERROR_MSG_used[] __attribute((unused)) = {1092};1093 1094#define A_REJECT_MSG 0x000000071095static u32 A_REJECT_MSG_used[] __attribute((unused)) = {1096};1097 1098#define A_REJECT_MSG_BEFORE_CMD 0x000002701099static u32 A_REJECT_MSG_BEFORE_CMD_used[] __attribute((unused)) = {1100};1101 1102#define A_REJECT_MSG_R 0x000000701103static u32 A_REJECT_MSG_R_used[] __attribute((unused)) = {1104};1105 1106#define A_RESELECTED_DURING_SELECTION 0x000010001107static u32 A_RESELECTED_DURING_SELECTION_used[] __attribute((unused)) = {1108 0x0000000b,1109};1110 1111#define A_RESELECTION_IDENTIFIED 0x000010031112static u32 A_RESELECTION_IDENTIFIED_used[] __attribute((unused)) = {1113 0x00000011,1114 0x00000015,1115};1116 1117#define A_RESTORE_DATA_PTRS_MSG 0x000000031118static u32 A_RESTORE_DATA_PTRS_MSG_used[] __attribute((unused)) = {1119 0x0000008e,1120 0x00000098,1121 0x000000b4,1122 0x000000dc,1123 0x00000100,1124};1125 1126#define A_ReceiveMsgAddress 0x000000001127static u32 A_ReceiveMsgAddress_used[] __attribute((unused)) = {1128 0x0000000f,1129 0x00000013,1130 0x00000029,1131 0x00000031,1132 0x00000037,1133 0x00000047,1134 0x0000004d,1135 0x00000053,1136 0x00000059,1137 0x0000005f,1138 0x00000089,1139 0x00000093,1140 0x000000b1,1141 0x000000d7,1142 0x000000fb,1143 0x0000011d,1144};1145 1146#define A_SAVE_DATA_PTRS_MSG 0x000000021147static u32 A_SAVE_DATA_PTRS_MSG_used[] __attribute((unused)) = {1148 0x0000008c,1149 0x00000096,1150 0x000000b2,1151 0x000000da,1152 0x000000fe,1153};1154 1155#define A_SDTR_MSG 0x000000011156static u32 A_SDTR_MSG_used[] __attribute((unused)) = {1157};1158 1159#define A_SDTR_MSG_AFTER_CMD 0x000003601160static u32 A_SDTR_MSG_AFTER_CMD_used[] __attribute((unused)) = {1161};1162 1163#define A_SDTR_MSG_BEFORE_CMD 0x000002601164static u32 A_SDTR_MSG_BEFORE_CMD_used[] __attribute((unused)) = {1165};1166 1167#define A_SDTR_MSG_R 0x000000601168static u32 A_SDTR_MSG_R_used[] __attribute((unused)) = {1169};1170 1171#define A_SGScriptStartAddress 0x000000001172static u32 A_SGScriptStartAddress_used[] __attribute((unused)) = {1173 0x000000bf,1174 0x000000cf,1175};1176 1177#define A_SIMPLE_TAG_MSG 0x000000201178static u32 A_SIMPLE_TAG_MSG_used[] __attribute((unused)) = {1179};1180 1181#define A_StatusAddress 0x000000001182static u32 A_StatusAddress_used[] __attribute((unused)) = {1183 0x00000119,1184};1185 1186#define A_TWO_BYTE_MSG 0x000000201187static u32 A_TWO_BYTE_MSG_used[] __attribute((unused)) = {1188 0x0000002c,1189};1190 1191#define A_TWO_BYTE_MSG_MASK 0x0000000f1192static u32 A_TWO_BYTE_MSG_MASK_used[] __attribute((unused)) = {1193 0x0000002c,1194};1195 1196#define A_UNEXPECTED_MSG 0x000000401197static u32 A_UNEXPECTED_MSG_used[] __attribute((unused)) = {1198};1199 1200#define A_UNEXPECTED_MSG_BEFORE_CMD 0x000002401201static u32 A_UNEXPECTED_MSG_BEFORE_CMD_used[] __attribute((unused)) = {1202};1203 1204#define A_UNEXPECTED_PHASE 0x000000201205static u32 A_UNEXPECTED_PHASE_used[] __attribute((unused)) = {1206};1207 1208#define A_UNEXPECTED_PHASE_AFTER_CMD 0x000003201209static u32 A_UNEXPECTED_PHASE_AFTER_CMD_used[] __attribute((unused)) = {1210 0x00000083,1211};1212 1213#define A_UNEXPECTED_PHASE_AFTER_DATA_IN 0x000005201214static u32 A_UNEXPECTED_PHASE_AFTER_DATA_IN_used[] __attribute((unused)) = {1215 0x000000c9,1216};1217 1218#define A_UNEXPECTED_PHASE_AFTER_DATA_OUT 0x000006201219static u32 A_UNEXPECTED_PHASE_AFTER_DATA_OUT_used[] __attribute((unused)) = {1220 0x000000d5,1221};1222 1223#define A_UNEXPECTED_PHASE_BEFORE_CMD 0x000002201224static u32 A_UNEXPECTED_PHASE_BEFORE_CMD_used[] __attribute((unused)) = {1225 0x00000077,1226};1227 1228#define A_WDTR_MSG 0x000000031229static u32 A_WDTR_MSG_used[] __attribute((unused)) = {1230};1231 1232#define A_WDTR_MSG_AFTER_CMD 0x000003a01233static u32 A_WDTR_MSG_AFTER_CMD_used[] __attribute((unused)) = {1234};1235 1236#define A_WDTR_MSG_R 0x000000a01237static u32 A_WDTR_MSG_R_used[] __attribute((unused)) = {1238};1239 1240#define Ent_Disconnect1 0x000002a81241#define Ent_Disconnect2 0x000002b01242#define Ent_Disconnect3 0x000003a81243#define Ent_Disconnect4 0x000003b01244#define Ent_Disconnect5 0x000003d01245#define Ent_Disconnect6 0x000003d81246#define Ent_Disconnect7 0x000004481247#define Ent_Disconnect8 0x000004501248#define Ent_Finish1 0x000004a01249#define Ent_Finish2 0x000004a81250#define Ent_FinishCommandComplete 0x000004901251#define Ent_GetReselectionData 0x000000381252#define Ent_GetReselectionWithTag 0x000000481253#define Ent_IgnoreMessage 0x000001881254#define Ent_MsgInDuringData 0x000002181255#define Ent_ReceiveMessage 0x000000a01256#define Ent_SelectedAsTarget 0x000000581257#define Ent_SendCommand 0x000001c81258#define Ent_SendMessage 0x000000781259#define Ent_SendMessagePhaseMismatch 0x000000901260#define Ent_SendMessageWithATN 0x000001981261#define Ent_StartUp 0x000000001262static u32 LABELPATCHES[] __attribute((unused)) = {1263 0x00000001,1264 0x00000003,1265 0x00000005,1266 0x00000009,1267 0x00000027,1268 0x0000002b,1269 0x00000039,1270 0x0000003b,1271 0x0000003d,1272 0x0000003f,1273 0x00000041,1274 0x0000006b,1275 0x0000006d,1276 0x00000073,1277 0x00000075,1278 0x0000007b,1279 0x0000007d,1280 0x0000007f,1281 0x00000081,1282 0x00000087,1283 0x0000008b,1284 0x0000008d,1285 0x0000008f,1286 0x00000095,1287 0x00000097,1288 0x00000099,1289 0x0000009b,1290 0x000000a1,1291 0x000000a5,1292 0x000000af,1293 0x000000b3,1294 0x000000b5,1295 0x000000b7,1296 0x000000bd,1297 0x000000c1,1298 0x000000c3,1299 0x000000c5,1300 0x000000cd,1301 0x000000d1,1302 0x000000d3,1303 0x000000d9,1304 0x000000db,1305 0x000000dd,1306 0x000000df,1307 0x000000e5,1308 0x000000ef,1309 0x000000f9,1310 0x000000fd,1311 0x000000ff,1312 0x00000101,1313 0x00000103,1314 0x00000109,1315 0x0000010d,1316 0x00000117,1317 0x0000011f,1318 0x00000121,1319};1320 1321static struct {1322 u32 offset;1323 void *address;1324} EXTERNAL_PATCHES[] __attribute((unused)) = {1325};1326 1327static u32 INSTRUCTIONS __attribute((unused)) = 149;1328static u32 PATCHES __attribute((unused)) = 56;1329static u32 EXTERNAL_PATCHES_LEN __attribute((unused)) = 0;1330