www.pudn.com > DMBDRV.rar > smsspicommon.cod


; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345  
 
	TTL	E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\SpiDrv\.\smsspicommon.c 
	CODE32 
 
  00000			 AREA	 |.drectve|, DRECTVE 
	DCB	"-defaultlib:coredll.lib " 
	DCB	"-defaultlib:corelibc.lib " 
 
	IMPORT	|memcpy| 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\spidrv\smsspicommon.c 
 
  00000			 AREA	 |.text| { |smsspi_common_find_msg| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$smsspi_common_find_msg|, PDATA, SELECTION=5, ASSOC=|.text| { |smsspi_common_find_msg| } ; comdat associative 
|$T37746| DCD	|$L37745| 
	DCD	0x40009a01 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |smsspi_common_find_msg| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |smsspi_common_find_msg| PROC 
 
; 8    : { 
 
  00000		 |$L37745| 
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr} 
  00004		 |$M37743| 
  00004	e1a09002	 mov         r9, r2 
  00008	e1a07001	 mov         r7, r1 
  0000c	e1a04000	 mov         r4, r0 
 
; 9    : 	int	i, missing_bytes; 
; 10   : 	 
; 11   : 	int TmpLen; 
; 12   : 	//DBGMSG(ZONE_INFO, (TEXT("entering with %d bytes.\n"), len)); 
; 13   :  
; 14   : 	missing_bytes = 0; 
 
  00010	e3a06000	 mov         r6, #0 
 
; 15   : 	for(i=0;irxState) 
 
  00038	e5942014	 ldr         r2, [r4, #0x14] 
  0003c	e352000a	 cmp         r2, #0xA 
  00040	8a000082	 bhi         |$L37612| 
  00044	e1a03082	 mov         r3, r2, lsl #1 
  00048	e083300f	 add         r3, r3, pc 
  0004c	e1d330b4	 ldrh        r3, [r3, #4] 
  00050	e08ff003	 add         pc, pc, r3 
  00054		 |$L37742| 
  00054		 |$L37741| 
  00054	0014		 DCW         0x14 
  00056	002c		 DCW         0x2c 
  00058	0048		 DCW         0x48 
  0005a	005c		 DCW         0x5c 
  0005c	0074		 DCW         0x74 
  0005e	008c		 DCW         0x8c 
  00060	00a0		 DCW         0xa0 
  00062	00b4		 DCW         0xb4 
  00064	00d8		 DCW         0xd8 
  00066	0108		 DCW         0x108 
  00068	017c		 DCW         0x17c 
 
; 135  : } 
 
  0006a	017c		 DCW         0x17c 
  0006c		 |$L37618| 
 
; 18   : 		{ 
; 19   : 			case RxsWait_a5: 
; 20   : 				if((buf[i] & 0xff)== 0xa5) 
 
  0006c	e7d53007	 ldrb        r3, [r5, +r7] 
  00070	e35300a5	 cmp         r3, #0xA5 
  00074	1a000054	 bne         |$L37738| 
 
; 21   : 				{ 
; 22   : 					dev->rxState = RxsWait_5a; 
 
  00078	e5841014	 str         r1, [r4, #0x14] 
 
; 23   : 					missing_bytes = SPI_PACKET_SIZE; 
 
  0007c	e3a06c01	 mov         r6, #1, 24 
 
; 24   : 					//DBGMSG(ZONE_DETAILED, (TEXT("state %d. missing_bytes = %d\n"), dev->rxState, missing_bytes)); 
; 25   : 				} 
; 26   : 				else 
 
  00080	ea000072	 b           |$L37612| 
  00084		 |$L37621| 
 
; 27   : 				{ 
; 28   : 					missing_bytes = 0; 
; 29   : 				} 
; 30   : 			break; 
; 31   : 			case RxsWait_5a: 
; 32   : 				if((buf[i] & 0xff) == 0x5a) 
 
  00084	e7d53007	 ldrb        r3, [r5, +r7] 
  00088	e353005a	 cmp         r3, #0x5A 
 
; 33   : 					dev->rxState = RxsWait_e7; 
 
  0008c	05840014	 streq       r0, [r4, #0x14] 
  00090	0a00006e	 beq         |$L37612| 
  00094		 |$L37622| 
 
; 34   : 				else 
; 35   : 				{ 
; 36   : 					dev->rxState = RxsWait_a5; 
 
  00094	e584a014	 str         r10, [r4, #0x14] 
 
; 95   :  
; 96   : 				if(dev->rxPacket.len>RX_PACKET_SIZE) 
; 97   : 				{ 
; 98   : 					dev->rxPacket.len=RX_PACKET_SIZE; 
; 99   : 				} 
; 100  : 				//DataCnt counts the remaining bytes of the message which is the length - the header already taken. 
; 101  : 				dev->rxPacket.cnt = dev->rxPacket.len - 6; 
; 102  : 				missing_bytes = ((dev->rxPacket.cnt - (len - i) + SPI_PACKET_SIZE) & 0xffffff00); 
; 103  : 				if (missing_bytes < 0) 
; 104  : 					missing_bytes = 0; 
 
  00098	e3a06000	 mov         r6, #0 
 
; 105  : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d msglen = %d, missing %d .\n"), dev->rxState, dev->rxPacket.cnt, missing_bytes)); 
; 106  : 			break; 
 
  0009c	ea00006b	 b           |$L37612| 
  000a0		 |$L37624| 
 
; 37   : 					missing_bytes = 0; 
; 38   : 				} 
; 39   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 40   : 			break; 
; 41   : 			case RxsWait_e7: 
; 42   : 				if((buf[i] & 0xff) == 0xe7) 
 
  000a0	e7d53007	 ldrb        r3, [r5, +r7] 
  000a4	e35300e7	 cmp         r3, #0xE7 
  000a8	1afffff9	 bne         |$L37622| 
 
; 43   : 					dev->rxState = RxsWait_7e; 
 
  000ac	e584e014	 str         lr, [r4, #0x14] 
 
; 44   : 				else 
 
  000b0	ea000066	 b           |$L37612| 
  000b4		 |$L37627| 
 
; 45   : 				{ 
; 46   : 					dev->rxState = RxsWait_a5; 
; 47   : 					missing_bytes = 0; 
; 48   : 				} 
; 49   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 50   : 			break; 
; 51   : 			case RxsWait_7e: 
; 52   : 				if((buf[i] & 0xff) == 0x7e) 
 
  000b4	e7d53007	 ldrb        r3, [r5, +r7] 
  000b8	e353007e	 cmp         r3, #0x7E 
 
; 53   : 					dev->rxState = RxsTypeH; 
 
  000bc	05848014	 streq       r8, [r4, #0x14] 
  000c0	0a000062	 beq         |$L37612| 
 
; 54   : 				else 
; 55   : 					dev->rxState = RxsWait_a5; 
 
  000c4	e584a014	 str         r10, [r4, #0x14] 
 
; 56   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 57   : 			break; 
 
  000c8	ea000060	 b           |$L37612| 
  000cc		 |$L37630| 
 
; 58   : 			case RxsTypeH: 
; 59   : 				dev->rxPacket.pos = dev->rxbuf; 
 
  000cc	e5942010	 ldr         r2, [r4, #0x10] 
  000d0	e5842018	 str         r2, [r4, #0x18] 
 
; 60   : 				*dev->rxPacket.pos = (buf[i] & 0xff); 
 
  000d4	e19530d7	 ldrsb       r3, [r5, +r7] 
  000d8	e5c23000	 strb        r3, [r2] 
 
; 61   : 				dev->rxPacket.pos++; 
; 62   : 				dev->rxState = RxsTypeL; 
 
  000dc	e3a02005	 mov         r2, #5 
 
; 63   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 64   : 			break; 
 
  000e0	ea00000d	 b           |$L37740| 
  000e4		 |$L37631| 
 
; 65   : 			case RxsTypeL: 
; 66   : 				*dev->rxPacket.pos = (buf[i] & 0xff); 
 
  000e4	e5942018	 ldr         r2, [r4, #0x18] 
  000e8	e19530d7	 ldrsb       r3, [r5, +r7] 
  000ec	e5c23000	 strb        r3, [r2] 
 
; 67   : 				dev->rxPacket.pos++; 
; 68   : 				dev->rxState = RxsGetSrcId; 
 
  000f0	e3a02006	 mov         r2, #6 
 
; 69   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 70   : 			break; 
 
  000f4	ea000008	 b           |$L37740| 
  000f8		 |$L37632| 
 
; 71   : 			case RxsGetSrcId: 
; 72   : 				*dev->rxPacket.pos = (buf[i] & 0xff); 
 
  000f8	e5942018	 ldr         r2, [r4, #0x18] 
  000fc	e19530d7	 ldrsb       r3, [r5, +r7] 
  00100	e5c23000	 strb        r3, [r2] 
 
; 73   : 				dev->rxPacket.pos++; 
; 74   : 				dev->rxState = RxsGetDstId; 
 
  00104	e3a02007	 mov         r2, #7 
 
; 75   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 76   : 			break; 
 
  00108	ea000003	 b           |$L37740| 
  0010c		 |$L37633| 
 
; 77   : 			case RxsGetDstId: 
; 78   : 				*dev->rxPacket.pos = (buf[i] & 0xff); 
 
  0010c	e5942018	 ldr         r2, [r4, #0x18] 
  00110	e19530d7	 ldrsb       r3, [r5, +r7] 
  00114	e5c23000	 strb        r3, [r2] 
 
; 79   : 				dev->rxPacket.pos++; 
; 80   : 				dev->rxState = RxsGetLenL; 
 
  00118	e3a02008	 mov         r2, #8 
  0011c		 |$L37740| 
  0011c	e5943018	 ldr         r3, [r4, #0x18] 
  00120	e5842014	 str         r2, [r4, #0x14] 
  00124	e2833001	 add         r3, r3, #1 
  00128	e5843018	 str         r3, [r4, #0x18] 
 
; 81   : 				//DBGMSG(ZONE_DETAILED_SET, (TEXT("state %d.\n"), dev->rxState)); 
; 82   : 			break; 
 
  0012c	ea000047	 b           |$L37612| 
  00130		 |$L37634| 
 
; 83   : 			case RxsGetLenL: 
; 84   : 				*dev->rxPacket.pos = (buf[i] & 0xff); 
 
  00130	e1a01005	 mov         r1, r5 
  00134	e1b120d7	 ldrsb       r2, [r1, +r7]! 
  00138	e5943018	 ldr         r3, [r4, #0x18] 
  0013c	e5c32000	 strb        r2, [r3] 
 
; 85   : 				dev->rxPacket.pos++; 
 
  00140	e5943018	 ldr         r3, [r4, #0x18] 
 
; 86   : 				dev->rxState = RxsGetLenH; 
 
  00144	e3a02009	 mov         r2, #9 
  00148	e5842014	 str         r2, [r4, #0x14] 
  0014c	e2833001	 add         r3, r3, #1 
  00150	e5843018	 str         r3, [r4, #0x18] 
 
; 87   : 				dev->rxPacket.len = (buf[i] & 0xff); 
 
  00154	e5d13000	 ldrb        r3, [r1] 
  00158	e584301c	 str         r3, [r4, #0x1C] 
 
; 88   : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 89   : 			break; 
 
  0015c	ea00003a	 b           |$L37737| 
  00160		 |$L37635| 
 
; 90   : 			case RxsGetLenH: 
; 91   : 				*dev->rxPacket.pos = (buf[i] & 0xff); 
 
  00160	e1a01005	 mov         r1, r5 
  00164	e1b120d7	 ldrsb       r2, [r1, +r7]! 
  00168	e5943018	 ldr         r3, [r4, #0x18] 
  0016c	e5c32000	 strb        r2, [r3] 
 
; 92   : 				dev->rxPacket.pos++; 
 
  00170	e5943018	 ldr         r3, [r4, #0x18] 
 
; 93   : 				dev->rxState = RxsData; 
 
  00174	e3a0200a	 mov         r2, #0xA 
  00178	e5842014	 str         r2, [r4, #0x14] 
 
; 94   : 				dev->rxPacket.len |= ((unsigned short)(buf[i] & 0xff))<<8; 
 
  0017c	e2833001	 add         r3, r3, #1 
  00180	e5843018	 str         r3, [r4, #0x18] 
  00184	e1d130d0	 ldrsb       r3, [r1] 
  00188	e594201c	 ldr         r2, [r4, #0x1C] 
 
; 105  : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d msglen = %d, missing %d .\n"), dev->rxState, dev->rxPacket.cnt, missing_bytes)); 
; 106  : 			break; 
 
  0018c	e3a01001	 mov         r1, #1 
  00190	e1a03803	 mov         r3, r3, lsl #16 
  00194	e1a03823	 mov         r3, r3, lsr #16 
  00198	e20330ff	 and         r3, r3, #0xFF 
  0019c	e1823403	 orr         r3, r2, r3, lsl #8 
  001a0	e3530a01	 cmp         r3, #1, 20 
  001a4	e584301c	 str         r3, [r4, #0x1C] 
  001a8	c584b01c	 strgt       r11, [r4, #0x1C] 
  001ac	e594301c	 ldr         r3, [r4, #0x1C] 
  001b0	e2432006	 sub         r2, r3, #6 
  001b4	e0423009	 sub         r3, r2, r9 
  001b8	e0833005	 add         r3, r3, r5 
  001bc	e2833c01	 add         r3, r3, #1, 24 
  001c0	e3d360ff	 bics        r6, r3, #0xFF 
  001c4	e5842020	 str         r2, [r4, #0x20] 
  001c8	5a000020	 bpl         |$L37612| 
  001cc		 |$L37738| 
 
; 95   :  
; 96   : 				if(dev->rxPacket.len>RX_PACKET_SIZE) 
; 97   : 				{ 
; 98   : 					dev->rxPacket.len=RX_PACKET_SIZE; 
; 99   : 				} 
; 100  : 				//DataCnt counts the remaining bytes of the message which is the length - the header already taken. 
; 101  : 				dev->rxPacket.cnt = dev->rxPacket.len - 6; 
; 102  : 				missing_bytes = ((dev->rxPacket.cnt - (len - i) + SPI_PACKET_SIZE) & 0xffffff00); 
; 103  : 				if (missing_bytes < 0) 
; 104  : 					missing_bytes = 0; 
 
  001cc	e3a06000	 mov         r6, #0 
 
; 105  : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d msglen = %d, missing %d .\n"), dev->rxState, dev->rxPacket.cnt, missing_bytes)); 
; 106  : 			break; 
 
  001d0	ea00001e	 b           |$L37612| 
  001d4		 |$L37639| 
 
; 107  : 			case RxsData: 
; 108  : 				 
; 109  : 				//copying the Data of the packet  
; 110  : 				TmpLen = len - i; 
; 111  : 				TmpLen = min(TmpLen, dev->rxPacket.cnt); 
 
  001d4	e5943020	 ldr         r3, [r4, #0x20] 
  001d8	e0498005	 sub         r8, r9, r5 
 
; 112  : 				memcpy(dev->rxPacket.pos,&buf[i],TmpLen); 
 
  001dc	e5940018	 ldr         r0, [r4, #0x18] 
  001e0	e1580003	 cmp         r8, r3 
  001e4	a1a08003	 movge       r8, r3 
  001e8	e1a02008	 mov         r2, r8 
  001ec	e0851007	 add         r1, r5, r7 
  001f0	eb000000	 bl          memcpy 
 
; 113  : 				//DBGMSG(ZONE_DETAILED, (TEXT("found %d bytes of data.\n"), TmpLen)); 
; 114  : 				//dec Data count 
; 115  : 				dev->rxPacket.cnt-=TmpLen; 
 
  001f4	e5943020	 ldr         r3, [r4, #0x20] 
 
; 116  : 				 
; 117  : 				//inc pos 
; 118  : 				dev->rxPacket.pos+=TmpLen; 
 
  001f8	e5941018	 ldr         r1, [r4, #0x18] 
 
; 119  : 				//setting to end of parsing 
; 120  : 				i += TmpLen;//stop the loop or parse the rest of the packet not copied				 
 
  001fc	e0855008	 add         r5, r5, r8 
  00200	e0433008	 sub         r3, r3, r8 
  00204	e5843020	 str         r3, [r4, #0x20] 
 
; 121  : 				//DBGMSG(ZONE_DETAILED, (TEXT("i=%d.\n"),i)); 
; 122  : 				if(dev->rxPacket.cnt == 0)	 
 
  00208	e1a02003	 mov         r2, r3 
  0020c	e0813008	 add         r3, r1, r8 
  00210	e5843018	 str         r3, [r4, #0x18] 
  00214	e3520000	 cmp         r2, #0 
  00218	1a000008	 bne         |$L37736| 
 
; 123  : 				{					 
; 124  : 					if (dev->msg_found_cb) 
 
  0021c	e5943004	 ldr         r3, [r4, #4] 
  00220	e3530000	 cmp         r3, #0 
 
; 125  : 						dev->msg_found_cb(dev->logContext, dev->rxbuf, dev->rxPacket.len); 
 
  00224	1594201c	 ldrne       r2, [r4, #0x1C] 
  00228	15941010	 ldrne       r1, [r4, #0x10] 
  0022c	15940008	 ldrne       r0, [r4, #8] 
  00230	11a0e00f	 movne       lr, pc 
  00234	112fff13	 bxne        r3 
 
; 126  : 					dev->rxState = RxsWait_a5; 
 
  00238	e584a014	 str         r10, [r4, #0x14] 
 
; 127  : 					missing_bytes = 0; 
 
  0023c	e3a06000	 mov         r6, #0 
  00240		 |$L37736| 
  00240	e3a08004	 mov         r8, #4 
  00244	e3a0e003	 mov         lr, #3 
  00248	e3a00002	 mov         r0, #2 
  0024c		 |$L37737| 
  0024c	e3a01001	 mov         r1, #1 
  00250		 |$L37612| 
  00250	e2855001	 add         r5, r5, #1 
  00254	e1550009	 cmp         r5, r9 
  00258	baffff76	 blt         |$L37611| 
  0025c		 |$L37613| 
 
; 128  : 				}		 
; 129  : 				//DBGMSG(ZONE_DETAILED, (TEXT("state %d.\n"), dev->rxState)); 
; 130  : 			break; 
; 131  : 		} 
; 132  : 	}	 
; 133  : 	//DBGMSG(ZONE_DETAILED, (TEXT("exiting. missing %d bytes\n"), missing_bytes)); 
; 134  : 	return missing_bytes; 
 
  0025c	e1a00006	 mov         r0, r6 
 
; 135  : } 
 
  00260	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr} 
  00264	e12fff1e	 bx          lr 
  00268		 |$M37744| 
 
			 ENDP  ; |smsspi_common_find_msg| 
 
	EXPORT	|smsspi_common_transfer_msg| 
	EXPORT	|??_C@_1GE@MCCOAIOA@?$AAf?$AAu?$AAn?$AAc?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAc?$AAa?$AAl?$AAl?$AAe?$AAd?$AA?5?$AAw?$AAh?$AAi?$AAl@| [ DATA ] ; `string' 
	IMPORT	|NKDbgPrintfW| 
	IMPORT	|dpCurSettings| 
 
  00000			 AREA	 |.text| { |smsspi_common_transfer_msg| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$smsspi_common_transfer_msg|, PDATA, SELECTION=5, ASSOC=|.text| { |smsspi_common_transfer_msg| } ; comdat associative 
|$T37768| DCD	|$L37767| 
	DCD	0x40004402 
 
  00000			 AREA	 |.rdata| { |??_C@_1GE@MCCOAIOA@?$AAf?$AAu?$AAn?$AAc?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAc?$AAa?$AAl?$AAl?$AAe?$AAd?$AA?5?$AAw?$AAh?$AAi?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1GE@MCCOAIOA@?$AAf?$AAu?$AAn?$AAc?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAc?$AAa?$AAl?$AAl?$AAe?$AAd?$AA?5?$AAw?$AAh?$AAi?$AAl@| DCB "f" 
	DCB	0x0, "u", 0x0, "n", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "o" 
	DCB	0x0, "n", 0x0, " ", 0x0, "c", 0x0, "a", 0x0, "l", 0x0, "l" 
	DCB	0x0, "e", 0x0, "d", 0x0, " ", 0x0, "w", 0x0, "h", 0x0, "i" 
	DCB	0x0, "l", 0x0, "e", 0x0, " ", 0x0, "m", 0x0, "o", 0x0, "d" 
	DCB	0x0, "u", 0x0, "l", 0x0, "e", 0x0, " ", 0x0, "i", 0x0, "s" 
	DCB	0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t", 0x0, " ", 0x0, "i" 
	DCB	0x0, "n", 0x0, "i", 0x0, "t", 0x0, "i", 0x0, "a", 0x0, "l" 
	DCB	0x0, "i", 0x0, "z", 0x0, "e", 0x0, "d", 0x0, ".", 0x0, 0xa 
	DCB	0x0, 0x0, 0x0				; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |smsspi_common_transfer_msg| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |smsspi_common_transfer_msg| PROC 
 
; 138  : { 
 
  00000		 |$L37767| 
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr} 
  00004	e24dd008	 sub         sp, sp, #8 
  00008		 |$M37765| 
  00008	e1a0a000	 mov         r10, r0 
 
; 139  : 	int len, bytes_to_transfer; 
; 140  : 	unsigned long tx_phy_addr; 
; 141  : 	int missing_bytes, tx_bytes; 
; 142  : 	char* txbuf; 
; 143  : 	if (!dev->transfer_data_cb) 
 
  0000c	e59a3000	 ldr         r3, [r10] 
  00010	e3530000	 cmp         r3, #0 
  00014	1a000006	 bne         |$L37655| 
 
; 144  : 	{ 
; 145  : 		DBGMSG(ZONE_ERROR, (TEXT("function called while module is not initialized.\n"))); 
 
  00018	e59f30ec	 ldr         r3, [pc, #0xEC] 
  0001c	e5933440	 ldr         r3, [r3, #0x440] 
  00020	e3130001	 tst         r3, #1 
  00024	0a000034	 beq         |$L37667| 
  00028	e59f00d8	 ldr         r0, [pc, #0xD8] 
  0002c	eb000000	 bl          NKDbgPrintfW 
 
; 146  : 		return; 
 
  00030	ea000031	 b           |$L37667| 
  00034		 |$L37655| 
 
; 147  : 	} 
; 148  : 	if (txmsg == NULL || txmsg->buf == NULL) 
 
  00034	e3510000	 cmp         r1, #0 
  00038	0a00000f	 beq         |$L37660| 
  0003c	e5913000	 ldr         r3, [r1] 
  00040	e1b07003	 movs        r7, r3 
  00044	0a00000c	 beq         |$L37660| 
 
; 154  : 	} 
; 155  : 	else 
; 156  : 	{ 
; 157  : 		tx_bytes = txmsg->len; 
 
  00048	e5916008	 ldr         r6, [r1, #8] 
 
; 158  : 		if (padding_allowed) 
 
  0004c	e3520000	 cmp         r2, #0 
 
; 159  : 			bytes_to_transfer = (((tx_bytes + SPI_PACKET_SIZE - 1) / SPI_PACKET_SIZE) * SPI_PACKET_SIZE); 
; 160  : 		else 
; 161  : 			bytes_to_transfer = (((tx_bytes + 3) >>2) <<2); 
; 162  : 		txbuf = txmsg->buf; 
; 163  : 		tx_phy_addr = txmsg->buf_phy_addr; 
 
  00050	15919004	 ldrne       r9, [r1, #4] 
  00054	128620ff	 addne       r2, r6, #0xFF 
  00058	11a033c2	 movne       r3, r2, asr #7 
  0005c	10823c23	 addne       r3, r2, r3, lsr #24 
  00060	11a03443	 movne       r3, r3, asr #8 
  00064	11a05403	 movne       r5, r3, lsl #8 
  00068	1a000021	 bne         |$L37764| 
  0006c	e2863003	 add         r3, r6, #3 
  00070	e5919004	 ldr         r9, [r1, #4] 
  00074	e3c35003	 bic         r5, r3, #3 
  00078	ea00001d	 b           |$L37764| 
  0007c		 |$L37660| 
 
; 149  : 	{ 
; 150  : 		bytes_to_transfer = SPI_PACKET_SIZE; 
 
  0007c	e3a05c01	 mov         r5, #1, 24 
 
; 151  : 		txbuf = NULL; 
 
  00080	e3a07000	 mov         r7, #0 
 
; 152  : 		tx_phy_addr = 0; 
 
  00084	e3a09000	 mov         r9, #0 
 
; 153  : 		tx_bytes = 0; 
 
  00088	e3a06000	 mov         r6, #0 
  0008c	ea000018	 b           |$L37764| 
  00090		 |$L37666| 
 
; 166  : 	{ 
; 167  : 		len = min (bytes_to_transfer, RX_PACKET_SIZE); 
; 168  : 		//DBGMSG(ZONE_INFO, (TEXT("transfering block of %d bytes\n"), len)); 
; 169  : 		dev->transfer_data_cb(dev->phyContext, txbuf, tx_phy_addr, dev->transferRxBuf, (unsigned long)(dev->rxBufPhyAddr), len); 
 
  00090	e59a202c	 ldr         r2, [r10, #0x2C] 
  00094	e3550a01	 cmp         r5, #1, 20 
  00098	b1a08005	 movlt       r8, r5 
  0009c	a3a08a01	 movge       r8, #1, 20 
  000a0	e59a3028	 ldr         r3, [r10, #0x28] 
  000a4	e59a000c	 ldr         r0, [r10, #0xC] 
  000a8	e59a4000	 ldr         r4, [r10] 
  000ac	e58d2000	 str         r2, [sp] 
  000b0	e1a02009	 mov         r2, r9 
  000b4	e58d8004	 str         r8, [sp, #4] 
  000b8	e1a01007	 mov         r1, r7 
  000bc	e1a0e00f	 mov         lr, pc 
  000c0	e12fff14	 bx          r4 
 
; 170  : 		missing_bytes = smsspi_common_find_msg(dev, dev->transferRxBuf, len); 
 
  000c4	e59a1028	 ldr         r1, [r10, #0x28] 
  000c8	e1a02008	 mov         r2, r8 
  000cc	e1a0000a	 mov         r0, r10 
  000d0	eb000000	 bl          smsspi_common_find_msg 
 
; 171  : 		bytes_to_transfer -= len; 
; 172  : 		txbuf += len; 
; 173  : 		tx_bytes -= len; 
 
  000d4	e0466008	 sub         r6, r6, r8 
 
; 174  : 		if (tx_bytes <= 0) 
 
  000d8	e3560000	 cmp         r6, #0 
  000dc	e0455008	 sub         r5, r5, r8 
  000e0	e0877008	 add         r7, r7, r8 
 
; 175  : 		{ 
; 176  : 			txbuf = NULL; 
 
  000e4	d3a07000	 movle       r7, #0 
 
; 177  : 			tx_bytes = 0; 
 
  000e8	d3a06000	 movle       r6, #0 
 
; 178  : 		} 
; 179  : 		if (bytes_to_transfer < missing_bytes) 
 
  000ec	e1550000	 cmp         r5, r0 
 
; 180  : 		{ 
; 181  : 			bytes_to_transfer = missing_bytes; 
 
  000f0	b1a05000	 movlt       r5, r0 
  000f4		 |$L37764| 
 
; 164  : 	} 
; 165  : 	while (bytes_to_transfer) 
 
  000f4	e3550000	 cmp         r5, #0 
  000f8	1affffe4	 bne         |$L37666| 
  000fc		 |$L37667| 
 
; 182  : 			//DBGMSG(ZONE_INFO, (TEXT("a message was found, adding bytes to transfer, txmsg %d, total %d\r\n"), tx_bytes, bytes_to_transfer));  
; 183  : 		}		 
; 184  : 	}	 
; 185  : } 
 
  000fc	e28dd008	 add         sp, sp, #8 
  00100	e8bd47f0	 ldmia       sp!, {r4 - r10, lr} 
  00104	e12fff1e	 bx          lr 
  00108		 |$L37770| 
  00108	00000000	 DCD         |??_C@_1GE@MCCOAIOA@?$AAf?$AAu?$AAn?$AAc?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAc?$AAa?$AAl?$AAl?$AAe?$AAd?$AA?5?$AAw?$AAh?$AAi?$AAl@| 
  0010c	00000000	 DCD         |dpCurSettings| 
  00110		 |$M37766| 
 
			 ENDP  ; |smsspi_common_transfer_msg| 
 
	EXPORT	|smsspicommon_init| 
	EXPORT	|??_C@_1DK@FDFGAAHN@?$AAe?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo@| [ DATA ] ; `string' 
	EXPORT	|??_C@_1DI@PPECJONB@?$AAe?$AAx?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo?$AAn@| [ DATA ] ; `string' 
 
  00000			 AREA	 |.text| { |smsspicommon_init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$smsspicommon_init|, PDATA, SELECTION=5, ASSOC=|.text| { |smsspicommon_init| } ; comdat associative 
|$T37788| DCD	|$L37787| 
	DCD	0x40002601 
 
  00000			 AREA	 |.rdata| { |??_C@_1DI@PPECJONB@?$AAe?$AAx?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1DI@PPECJONB@?$AAe?$AAx?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo?$AAn@| DCB "e" 
	DCB	0x0, "x", 0x0, "i", 0x0, "t", 0x0, "i", 0x0, "n", 0x0, "g" 
	DCB	0x0, " ", 0x0, "s", 0x0, "m", 0x0, "s", 0x0, "s", 0x0, "p" 
	DCB	0x0, "i", 0x0, "c", 0x0, "o", 0x0, "m", 0x0, "m", 0x0, "o" 
	DCB	0x0, "n", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i", 0x0, "t" 
	DCB	0x0, ".", 0x0, 0xa, 0x0, 0x0, 0x0	; `string' 
 
  00000			 AREA	 |.rdata| { |??_C@_1DK@FDFGAAHN@?$AAe?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_C@_1DK@FDFGAAHN@?$AAe?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo@| DCB "e" 
	DCB	0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "i", 0x0, "n" 
	DCB	0x0, "g", 0x0, " ", 0x0, "s", 0x0, "m", 0x0, "s", 0x0, "s" 
	DCB	0x0, "p", 0x0, "i", 0x0, "c", 0x0, "o", 0x0, "m", 0x0, "m" 
	DCB	0x0, "o", 0x0, "n", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i" 
	DCB	0x0, "t", 0x0, ".", 0x0, 0xa, 0x0, 0x0, 0x0 ; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |smsspicommon_init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |smsspicommon_init| PROC 
 
; 194  : { 
 
  00000		 |$L37787| 
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr} 
  00004		 |$M37785| 
  00004	e1a07003	 mov         r7, r3 
  00008	e1a08002	 mov         r8, r2 
  0000c	e1a09001	 mov         r9, r1 
  00010	e1a05000	 mov         r5, r0 
 
; 195  : 	DBGMSG(ZONE_INFO, (TEXT("entering smsspicommon_init.\n" ))); 
 
  00014	e59f6078	 ldr         r6, [pc, #0x78] 
  00018	e596e440	 ldr         lr, [r6, #0x440] 
  0001c	e31e0008	 tst         lr, #8 
  00020	159f0068	 ldrne       r0, [pc, #0x68] 
  00024	1b000000	 blne        NKDbgPrintfW 
 
; 196  : 	if (transfer_data_cb == NULL || 
; 197  : 			msg_found_cb == NULL) 
 
  00028	e59de020	 ldr         lr, [sp, #0x20] 
  0002c	e35e0000	 cmp         lr, #0 
  00030	0a000012	 beq         |$L37700| 
  00034	e59d4024	 ldr         r4, [sp, #0x24] 
  00038	e3540000	 cmp         r4, #0 
  0003c	0a00000f	 beq         |$L37700| 
 
; 200  : 	} 
; 201  : 	dev->logContext = logContext; 
; 202  : 	dev->phyContext = phyContext; 
 
  00040	e59d301c	 ldr         r3, [sp, #0x1C] 
 
; 203  : 	dev->transferRxBuf = transferRxBuf; 
; 204  : 	dev->rxBufPhyAddr = rxBufPhyAddr; 
; 205  : 	dev->msg_found_cb = msg_found_cb; 
; 206  : 	dev->transfer_data_cb = transfer_data_cb; 
; 207  : 	dev->rxState = RxsWait_a5; 
 
  00044	e3a02000	 mov         r2, #0 
  00048	e5857008	 str         r7, [r5, #8] 
  0004c	e585300c	 str         r3, [r5, #0xC] 
  00050	e5859028	 str         r9, [r5, #0x28] 
  00054	e585802c	 str         r8, [r5, #0x2C] 
  00058	e5854004	 str         r4, [r5, #4] 
  0005c	e585e000	 str         lr, [r5] 
  00060	e5852014	 str         r2, [r5, #0x14] 
 
; 208  : 	DBGMSG(ZONE_INFO, (TEXT("exiting smsspicommon_init.\n" ))); 
 
  00064	e5963440	 ldr         r3, [r6, #0x440] 
  00068	e3130008	 tst         r3, #8 
  0006c	159f0018	 ldrne       r0, [pc, #0x18] 
  00070	1b000000	 blne        NKDbgPrintfW 
 
; 209  : 	return 0; 
 
  00074	e3a00000	 mov         r0, #0 
 
; 210  : } 
 
  00078	e8bd43f0	 ldmia       sp!, {r4 - r9, lr} 
  0007c	e12fff1e	 bx          lr 
  00080		 |$L37700| 
 
; 198  : 	{ 
; 199  : 		return -1; 
 
  00080	e3e00000	 mvn         r0, #0 
 
; 210  : } 
 
  00084	e8bd43f0	 ldmia       sp!, {r4 - r9, lr} 
  00088	e12fff1e	 bx          lr 
  0008c		 |$L37790| 
  0008c	00000000	 DCD         |??_C@_1DI@PPECJONB@?$AAe?$AAx?$AAi?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo?$AAn@| 
  00090	00000000	 DCD         |??_C@_1DK@FDFGAAHN@?$AAe?$AAn?$AAt?$AAe?$AAr?$AAi?$AAn?$AAg?$AA?5?$AAs?$AAm?$AAs?$AAs?$AAp?$AAi?$AAc?$AAo?$AAm?$AAm?$AAo@| 
  00094	00000000	 DCD         |dpCurSettings| 
  00098		 |$M37786| 
 
			 ENDP  ; |smsspicommon_init| 
 
	END