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 + -
显示快捷键?