⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xllp_gpio.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M1364|
  00008	e1a04000	 mov         r4, r0
  0000c	e58d4000	 str         r4, [sp]

; 381  : 	XLLP_UINT32_T LockID;
; 382  : 	XLLP_UINT32_T aGpioPinMask;
; 383  : 	XLLP_UINT32_T aSizeArray;
; 384  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 385  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 386  : 	XLLP_UINT32_T i;
; 387  : 
; 388  : 	//determine size of array
; 389  : 	aSizeArray = aGpioPinArray[0];

  00010	e5910000	 ldr         r0, [r1]

; 390  : 	aMask0=aMask1=aMask2=aMask3=0;

  00014	e3a0b000	 mov         r11, #0
  00018	e3a07000	 mov         r7, #0

; 391  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 392  : 
; 393  : 	for(i=1; i<=aSizeArray; i++)

  0001c	e3500001	 cmp         r0, #1
  00020	e3a09000	 mov         r9, #0
  00024	e3a0a000	 mov         r10, #0
  00028	e3a0e000	 mov         lr, #0
  0002c	e3a05000	 mov         r5, #0
  00030	e3a06000	 mov         r6, #0
  00034	e3a08000	 mov         r8, #0
  00038	3a000036	 bcc         |$L884|
  0003c	e2811004	 add         r1, r1, #4
  00040	e3a04001	 mov         r4, #1
  00044		 |$L872|

; 394  : 	{
; 395  : 		aGpioPinMask = 0x1u << (aGpioPinArray[i] & 0x1F);

  00044	e5913000	 ldr         r3, [r1]
  00048	e203201f	 and         r2, r3, #0x1F

; 396  : 		if(aGpioPinArray[i] > 95)

  0004c	e353005f	 cmp         r3, #0x5F

; 397  : 		{
; 398  : 			aMask3 |= aGpioPinMask;

  00050	818bb214	 orrhi       r11, r11, r4, lsl r2

; 399  : 			aSet3=XLLP_TRUE;

  00054	83a0e001	 movhi       lr, #1
  00058	8a000009	 bhi         |$L873|

; 400  : 		}
; 401  : 		else if(aGpioPinArray[i] > 63)

  0005c	e5913000	 ldr         r3, [r1]
  00060	e353003f	 cmp         r3, #0x3F

; 402  : 		{
; 403  : 			aMask2 |= aGpioPinMask;

  00064	81877214	 orrhi       r7, r7, r4, lsl r2

; 404  : 			aSet2=XLLP_TRUE;

  00068	83a05001	 movhi       r5, #1
  0006c	8a000004	 bhi         |$L873|

; 405  : 		}
; 406  : 		else if(aGpioPinArray[i] > 31)

  00070	e353001f	 cmp         r3, #0x1F

; 407  : 		{
; 408  : 			aMask1 |= aGpioPinMask;

  00074	81899214	 orrhi       r9, r9, r4, lsl r2

; 409  : 			aSet1=XLLP_TRUE;

  00078	83a06001	 movhi       r6, #1

; 410  : 		}
; 411  : 		else
; 412  : 		{
; 413  : 			aMask0 |= aGpioPinMask;

  0007c	918aa214	 orrls       r10, r10, r4, lsl r2

; 414  : 			aSet0=XLLP_TRUE;

  00080	93a08001	 movls       r8, #1
  00084		 |$L873|
  00084	e2811004	 add         r1, r1, #4
  00088	e2500001	 subs        r0, r0, #1
  0008c	1affffec	 bne         |$L872|

; 415  : 		}
; 416  : 	}
; 417  : 	if(aSet3)

  00090	e59d4000	 ldr         r4, [sp]
  00094	e35e0000	 cmp         lr, #0
  00098	0a000006	 beq         |$L881|

; 418  : 	{
; 419  : 		LockID = XllpLock(GRER3);

  0009c	e3a00022	 mov         r0, #0x22
  000a0	eb000000	 bl          XllpLock

; 420  : 		pGPIO->GRER3=((pGPIO->GRER3&~aMask3)&~XLLP_GPIO_PIN_RESERVED_BITS);

  000a4	e5943130	 ldr         r3, [r4, #0x130]
  000a8	e1c3300b	 bic         r3, r3, r11
  000ac	e3c334fe	 bic         r3, r3, #0xFE, 8
  000b0	e5843130	 str         r3, [r4, #0x130]

; 421  : 		XllpUnlock(LockID);

  000b4	eb000000	 bl          XllpUnlock
  000b8		 |$L881|

; 422  : 	}
; 423  : 	if(aSet2)

  000b8	e3550000	 cmp         r5, #0
  000bc	0a000005	 beq         |$L882|

; 424  : 	{
; 425  : 		LockID = XllpLock(GRER2);

  000c0	e3a0000f	 mov         r0, #0xF
  000c4	eb000000	 bl          XllpLock

; 426  : 		pGPIO->GRER2=((pGPIO->GRER2)&~aMask2);

  000c8	e5943038	 ldr         r3, [r4, #0x38]
  000cc	e1c33007	 bic         r3, r3, r7
  000d0	e5843038	 str         r3, [r4, #0x38]

; 427  : 		XllpUnlock(LockID);

  000d4	eb000000	 bl          XllpUnlock
  000d8		 |$L882|

; 428  : 	}
; 429  : 	if(aSet1)

  000d8	e3560000	 cmp         r6, #0
  000dc	0a000005	 beq         |$L883|

; 430  : 	{
; 431  : 		LockID = XllpLock(GRER1);

  000e0	e3a0000e	 mov         r0, #0xE
  000e4	eb000000	 bl          XllpLock

; 432  : 		pGPIO->GRER1=((pGPIO->GRER1)&~aMask1);

  000e8	e5943034	 ldr         r3, [r4, #0x34]
  000ec	e1c33009	 bic         r3, r3, r9
  000f0	e5843034	 str         r3, [r4, #0x34]

; 433  : 		XllpUnlock(LockID);

  000f4	eb000000	 bl          XllpUnlock
  000f8		 |$L883|

; 434  : 	}
; 435  : 	if(aSet0)

  000f8	e3580000	 cmp         r8, #0
  000fc	0a000005	 beq         |$L884|

; 436  : 	{
; 437  : 		LockID = XllpLock(GRER0);

  00100	e3a0000d	 mov         r0, #0xD
  00104	eb000000	 bl          XllpLock

; 438  : 		pGPIO->GRER0=((pGPIO->GRER0)&~aMask0);

  00108	e5943030	 ldr         r3, [r4, #0x30]
  0010c	e1c3300a	 bic         r3, r3, r10
  00110	e5843030	 str         r3, [r4, #0x30]

; 439  : 		XllpUnlock(LockID);

  00114	eb000000	 bl          XllpUnlock
  00118		 |$L884|

; 440  : 	}
; 441  : 	}

  00118	e28dd004	 add         sp, sp, #4
  0011c	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  00120	e12fff1e	 bx          lr
  00124		 |$M1365|

			 ENDP  ; |XllpGpioSetRisingDetectDisable|

	EXPORT	|XllpGpioSetRisingDetectEnable|

  00000			 AREA	 |.text| { |XllpGpioSetRisingDetectEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpGpioSetRisingDetectEnable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioSetRisingDetectEnable| } ; comdat associative
|$T1392| DCD	|$L1391|
	DCD	0x40004902
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpGpioSetRisingDetectEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpGpioSetRisingDetectEnable| PROC

; 450  : 	{

  00000		 |$L1391|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M1389|
  00008	e1a04000	 mov         r4, r0
  0000c	e58d4000	 str         r4, [sp]

; 451  : 	XLLP_UINT32_T LockID;
; 452  : 	XLLP_UINT32_T aGpioPinMask;
; 453  : 	XLLP_UINT32_T aSizeArray;
; 454  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 455  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 456  : 	XLLP_UINT32_T i;
; 457  : 
; 458  : 	//determine size of array
; 459  : 	aSizeArray = aGpioPinArray[0];

  00010	e5910000	 ldr         r0, [r1]

; 460  : 	aMask0=aMask1=aMask2=aMask3=0;

  00014	e3a0b000	 mov         r11, #0
  00018	e3a08000	 mov         r8, #0

; 461  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 462  : 
; 463  : 	for(i=1; i<=aSizeArray; i++)

  0001c	e3500001	 cmp         r0, #1
  00020	e3a0a000	 mov         r10, #0
  00024	e3a09000	 mov         r9, #0
  00028	e3a0e000	 mov         lr, #0
  0002c	e3a05000	 mov         r5, #0
  00030	e3a06000	 mov         r6, #0
  00034	e3a07000	 mov         r7, #0
  00038	3a000036	 bcc         |$L914|
  0003c	e2811004	 add         r1, r1, #4
  00040	e3a04001	 mov         r4, #1
  00044		 |$L902|

; 464  : 	{
; 465  : 		aGpioPinMask = 0x1u << (aGpioPinArray[i] & 0x1F);

  00044	e5913000	 ldr         r3, [r1]
  00048	e203201f	 and         r2, r3, #0x1F

; 466  : 		if(aGpioPinArray[i] > 95)

  0004c	e353005f	 cmp         r3, #0x5F

; 467  : 		{
; 468  : 			aMask3 |= aGpioPinMask;

  00050	818bb214	 orrhi       r11, r11, r4, lsl r2

; 469  : 			aSet3=XLLP_TRUE;

  00054	83a0e001	 movhi       lr, #1
  00058	8a000009	 bhi         |$L903|

; 470  : 		}
; 471  : 		else if(aGpioPinArray[i] > 63)

  0005c	e5913000	 ldr         r3, [r1]
  00060	e353003f	 cmp         r3, #0x3F

; 472  : 		{
; 473  : 			aMask2 |= aGpioPinMask;

  00064	81888214	 orrhi       r8, r8, r4, lsl r2

; 474  : 			aSet2=XLLP_TRUE;

  00068	83a05001	 movhi       r5, #1
  0006c	8a000004	 bhi         |$L903|

; 475  : 		}
; 476  : 		else if(aGpioPinArray[i] > 31)

  00070	e353001f	 cmp         r3, #0x1F

; 477  : 		{
; 478  : 			aMask1 |= aGpioPinMask;

  00074	818aa214	 orrhi       r10, r10, r4, lsl r2

; 479  : 			aSet1=XLLP_TRUE;

  00078	83a06001	 movhi       r6, #1

; 480  : 		}
; 481  : 		else
; 482  : 		{
; 483  : 			aMask0 |= aGpioPinMask;

  0007c	91899214	 orrls       r9, r9, r4, lsl r2

; 484  : 			aSet0=XLLP_TRUE;

  00080	93a07001	 movls       r7, #1
  00084		 |$L903|
  00084	e2811004	 add         r1, r1, #4
  00088	e2500001	 subs        r0, r0, #1
  0008c	1affffec	 bne         |$L902|

; 485  : 		}
; 486  : 	}
; 487  : 	if(aSet3)

  00090	e59d4000	 ldr         r4, [sp]
  00094	e35e0000	 cmp         lr, #0
  00098	0a000006	 beq         |$L911|

; 488  : 	{
; 489  : 		LockID = XllpLock(GRER3);

  0009c	e3a00022	 mov         r0, #0x22
  000a0	eb000000	 bl          XllpLock

; 490  : 		pGPIO->GRER3=((pGPIO->GRER3|aMask3)&~XLLP_GPIO_PIN_RESERVED_BITS);

  000a4	e5943130	 ldr         r3, [r4, #0x130]
  000a8	e183300b	 orr         r3, r3, r11
  000ac	e3c334fe	 bic         r3, r3, #0xFE, 8
  000b0	e5843130	 str         r3, [r4, #0x130]

; 491  : 		XllpUnlock(LockID);

  000b4	eb000000	 bl          XllpUnlock
  000b8		 |$L911|

; 492  : 	}
; 493  : 	if(aSet2)

  000b8	e3550000	 cmp         r5, #0
  000bc	0a000005	 beq         |$L912|

; 494  : 	{
; 495  : 		LockID = XllpLock(GRER2);

  000c0	e3a0000f	 mov         r0, #0xF
  000c4	eb000000	 bl          XllpLock

; 496  : 		pGPIO->GRER2=((pGPIO->GRER2)|aMask2);

  000c8	e5943038	 ldr         r3, [r4, #0x38]

; 497  : 		XllpUnlock(LockID);

  000cc	e1833008	 orr         r3, r3, r8
  000d0	e5843038	 str         r3, [r4, #0x38]
  000d4	eb000000	 bl          XllpUnlock
  000d8		 |$L912|

; 498  : 	}
; 499  : 	if(aSet1)

  000d8	e3560000	 cmp         r6, #0
  000dc	0a000005	 beq         |$L913|

; 500  : 	{
; 501  : 		LockID = XllpLock(GRER1);

  000e0	e3a0000e	 mov         r0, #0xE
  000e4	eb000000	 bl          XllpLock

; 502  : 		pGPIO->GRER1=((pGPIO->GRER1)|aMask1);

  000e8	e5943034	 ldr         r3, [r4, #0x34]

; 503  : 		XllpUnlock(LockID);

  000ec	e183300a	 orr         r3, r3, r10
  000f0	e5843034	 str         r3, [r4, #0x34]
  000f4	eb000000	 bl          XllpUnlock
  000f8		 |$L913|

; 504  : 	}
; 505  : 	if(aSet0)

  000f8	e3570000	 cmp         r7, #0
  000fc	0a000005	 beq         |$L914|

; 506  : 	{
; 507  : 		LockID = XllpLock(GRER0);

  00100	e3a0000d	 mov         r0, #0xD
  00104	eb000000	 bl          XllpLock

; 508  : 		pGPIO->GRER0=((pGPIO->GRER0)|aMask0);

  00108	e5943030	 ldr         r3, [r4, #0x30]

; 509  : 		XllpUnlock(LockID);

  0010c	e1833009	 orr         r3, r3, r9
  00110	e5843030	 str         r3, [r4, #0x30]
  00114	eb000000	 bl          XllpUnlock
  00118		 |$L914|

; 510  : 	}
; 511  : 	}

  00118	e28dd004	 add         sp, sp, #4
  0011c	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  00120	e12fff1e	 bx          lr
  00124		 |$M1390|

			 ENDP  ; |XllpGpioSetRisingDetectEnable|

	EXPORT	|XllpGpioGetFallingDetectEnable|

  00000			 AREA	 |.text| { |XllpGpioGetFallingDetectEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpGpioGetFallingDetectEnable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioGetFallingDetectEnable| } ; comdat associative
|$T1405| DCD	|$L1404|
	DCD	0x40000f01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpGpioGetFallingDetectEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpGpioGetFallingDetectEnable| PROC

; 522  : 	{

  00000		 |$L1404|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1402|

; 523  : 	XLLP_UINT32_T aGpioPinMask;
; 524  : 
; 525  : 	aGpioPinMask = 0x1 << (aGpioPin & 0x1F);
; 526  : 
; 527  : 	if(aGpioPin > 95)

  00004	e351005f	 cmp         r1, #0x5F

; 528  : 		return (pGPIO->GFER3 & aGpioPinMask);

  00008	8590313c	 ldrhi       r3, [r0, #0x13C]
  0000c	e201201f	 and         r2, r1, #0x1F
  00010	e3a0e001	 mov         lr, #1
  00014	8a000005	 bhi         |$L1401|

; 529  : 	else if(aGpioPin > 63) 

  00018	e351003f	 cmp         r1, #0x3F

; 530  : 		return (pGPIO->GFER2 & aGpioPinMask);

  0001c	85903044	 ldrhi       r3, [r0, #0x44]
  00020	8a000002	 bhi         |$L1401|

; 531  : 	else if(aGpioPin > 31) 

  00024	e351001f	 cmp         r1, #0x1F

; 532  : 		return (pGPIO->GFER1 & aGpioPinMask);

  00028	85903040	 ldrhi       r3, [r0, #0x40]

; 533  : 	else return (pGPIO->GFER0 & aGpioPinMask);

  0002c	9590303c	 ldrls       r3, [r0, #0x3C]
  00030		 |$L1401|
  00030	e003021e	 and         r0, r3, lr, lsl r2

; 534  : 	}

  00034	e49de004	 ldr         lr, [sp], #4
  00038	e12fff1e	 bx          lr
  0003c		 |$M1403|

			 ENDP  ; |XllpGpioGetFallingDetectEnable|

	EXPORT	|XllpGpioSetFallingEdgeDetectDisable|

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -