smsspicommon.cod
来自「这是mobile6.0下的DMB驱动」· COD 代码 · 共 783 行 · 第 1/2 页
COD
783 行
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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?