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