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

📄 xllp_gpio.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00000			 AREA	 |.text| { |XllpGpioSetFallingEdgeDetectDisable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

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

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

  00000		 |XllpGpioSetFallingEdgeDetectDisable| PROC

; 543  : 	{

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

; 544  : 	XLLP_UINT32_T LockID;
; 545  : 	XLLP_UINT32_T aGpioPinMask;
; 546  : 	XLLP_UINT32_T aSizeArray;
; 547  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 548  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 549  : 	XLLP_UINT32_T i;
; 550  : 
; 551  : 	//determine size of array
; 552  : 	aSizeArray = aGpioPinArray[0];

  00010	e5910000	 ldr         r0, [r1]

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

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

; 554  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 555  : 
; 556  : 	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         |$L956|
  0003c	e2811004	 add         r1, r1, #4
  00040	e3a04001	 mov         r4, #1
  00044		 |$L944|

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

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

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

  0004c	e353005f	 cmp         r3, #0x5F

; 560  : 		{
; 561  : 			aMask3 |= aGpioPinMask;

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

; 562  : 			aSet3=XLLP_TRUE;

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

; 563  : 		}
; 564  : 		else if(aGpioPinArray[i] > 63)

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

; 565  : 		{
; 566  : 			aMask2 |= aGpioPinMask;

  00064	81877214	 orrhi       r7, r7, r4, lsl r2

; 567  : 			aSet2=XLLP_TRUE;

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

; 568  : 		}
; 569  : 		else if(aGpioPinArray[i] > 31)

  00070	e353001f	 cmp         r3, #0x1F

; 570  : 		{
; 571  : 			aMask1 |= aGpioPinMask;

  00074	81899214	 orrhi       r9, r9, r4, lsl r2

; 572  : 			aSet1=XLLP_TRUE;

  00078	83a06001	 movhi       r6, #1

; 573  : 		}
; 574  : 		else
; 575  : 		{
; 576  : 			aMask0 |= aGpioPinMask;

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

; 577  : 			aSet0=XLLP_TRUE;

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

; 578  : 		}
; 579  : 	}
; 580  : 	if(aSet3)

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

; 581  : 	{
; 582  : 		LockID = XllpLock(GFER3);

  0009c	e3a00023	 mov         r0, #0x23
  000a0	eb000000	 bl          XllpLock

; 583  : 		pGPIO->GFER3=((pGPIO->GFER3&~aMask3)&~XLLP_GPIO_PIN_RESERVED_BITS);

  000a4	e594313c	 ldr         r3, [r4, #0x13C]
  000a8	e1c3300b	 bic         r3, r3, r11
  000ac	e3c334fe	 bic         r3, r3, #0xFE, 8
  000b0	e584313c	 str         r3, [r4, #0x13C]

; 584  : 		XllpUnlock(LockID);

  000b4	eb000000	 bl          XllpUnlock
  000b8		 |$L953|

; 585  : 	}
; 586  : 	if(aSet2)

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

; 587  : 	{
; 588  : 		LockID = XllpLock(GFER2);

  000c0	e3a00012	 mov         r0, #0x12
  000c4	eb000000	 bl          XllpLock

; 589  : 		pGPIO->GFER2=((pGPIO->GFER2)&~aMask2);

  000c8	e5943044	 ldr         r3, [r4, #0x44]
  000cc	e1c33007	 bic         r3, r3, r7
  000d0	e5843044	 str         r3, [r4, #0x44]

; 590  : 		XllpUnlock(LockID);

  000d4	eb000000	 bl          XllpUnlock
  000d8		 |$L954|

; 591  : 	}
; 592  : 	if(aSet1)

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

; 593  : 	{
; 594  : 		LockID = XllpLock(GFER1);

  000e0	e3a00011	 mov         r0, #0x11
  000e4	eb000000	 bl          XllpLock

; 595  : 		pGPIO->GFER1=((pGPIO->GFER1)&~aMask1);

  000e8	e5943040	 ldr         r3, [r4, #0x40]
  000ec	e1c33009	 bic         r3, r3, r9
  000f0	e5843040	 str         r3, [r4, #0x40]

; 596  : 		XllpUnlock(LockID);

  000f4	eb000000	 bl          XllpUnlock
  000f8		 |$L955|

; 597  : 	}
; 598  : 	if(aSet0)

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

; 599  : 	{
; 600  : 		LockID = XllpLock(GFER0);

  00100	e3a00010	 mov         r0, #0x10
  00104	eb000000	 bl          XllpLock

; 601  : 		pGPIO->GFER0=((pGPIO->GFER0)&~aMask0);

  00108	e594303c	 ldr         r3, [r4, #0x3C]
  0010c	e1c3300a	 bic         r3, r3, r10
  00110	e584303c	 str         r3, [r4, #0x3C]

; 602  : 		XllpUnlock(LockID);

  00114	eb000000	 bl          XllpUnlock
  00118		 |$L956|

; 603  : 	}
; 604  : 	}

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

			 ENDP  ; |XllpGpioSetFallingEdgeDetectDisable|

	EXPORT	|XllpGpioSetFallingEdgeDetectEnable|

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

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

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

  00000		 |XllpGpioSetFallingEdgeDetectEnable| PROC

; 613  : 	{

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

; 614  : 	XLLP_UINT32_T LockID;
; 615  : 	XLLP_UINT32_T aGpioPinMask;
; 616  : 	XLLP_UINT32_T aSizeArray;
; 617  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 618  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 619  : 	XLLP_UINT32_T i;
; 620  : 
; 621  : 	//determine size of array
; 622  : 	aSizeArray = aGpioPinArray[0];

  00010	e5910000	 ldr         r0, [r1]

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

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

; 624  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 625  : 	
; 626  : 	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         |$L986|
  0003c	e2811004	 add         r1, r1, #4
  00040	e3a04001	 mov         r4, #1
  00044		 |$L974|

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

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

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

  0004c	e353005f	 cmp         r3, #0x5F

; 630  : 		{
; 631  : 			aMask3 |= aGpioPinMask;

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

; 632  : 			aSet3=XLLP_TRUE;

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

; 633  : 		}
; 634  : 		else if(aGpioPinArray[i] > 63)

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

; 635  : 		{
; 636  : 			aMask2 |= aGpioPinMask;

  00064	81888214	 orrhi       r8, r8, r4, lsl r2

; 637  : 			aSet2=XLLP_TRUE;

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

; 638  : 		}
; 639  : 		else if(aGpioPinArray[i] > 31)

  00070	e353001f	 cmp         r3, #0x1F

; 640  : 		{
; 641  : 			aMask1 |= aGpioPinMask;

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

; 642  : 			aSet1=XLLP_TRUE;

  00078	83a06001	 movhi       r6, #1

; 643  : 		}
; 644  : 		else
; 645  : 		{
; 646  : 			aMask0 |= aGpioPinMask;

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

; 647  : 			aSet0=XLLP_TRUE;

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

; 648  : 		}
; 649  : 	}
; 650  : 	if(aSet3)

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

; 651  : 	{
; 652  : 		LockID = XllpLock(GFER3);

  0009c	e3a00023	 mov         r0, #0x23
  000a0	eb000000	 bl          XllpLock

; 653  : 		pGPIO->GFER3=((pGPIO->GFER3|aMask3)&~XLLP_GPIO_PIN_RESERVED_BITS);

  000a4	e594313c	 ldr         r3, [r4, #0x13C]
  000a8	e183300b	 orr         r3, r3, r11
  000ac	e3c334fe	 bic         r3, r3, #0xFE, 8
  000b0	e584313c	 str         r3, [r4, #0x13C]

; 654  : 		XllpUnlock(LockID);

  000b4	eb000000	 bl          XllpUnlock
  000b8		 |$L983|

; 655  : 	}
; 656  : 	if(aSet2)

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

; 657  : 	{
; 658  : 		LockID = XllpLock(GFER2);

  000c0	e3a00012	 mov         r0, #0x12
  000c4	eb000000	 bl          XllpLock

; 659  : 		pGPIO->GFER2=((pGPIO->GFER2)|aMask2);

  000c8	e5943044	 ldr         r3, [r4, #0x44]

; 660  : 		XllpUnlock(LockID);

  000cc	e1833008	 orr         r3, r3, r8
  000d0	e5843044	 str         r3, [r4, #0x44]
  000d4	eb000000	 bl          XllpUnlock
  000d8		 |$L984|

; 661  : 	}
; 662  : 	if(aSet1)

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

; 663  : 	{
; 664  : 		LockID = XllpLock(GFER1);

  000e0	e3a00011	 mov         r0, #0x11
  000e4	eb000000	 bl          XllpLock

; 665  : 		pGPIO->GFER1=((pGPIO->GFER1)|aMask1);

  000e8	e5943040	 ldr         r3, [r4, #0x40]

; 666  : 		XllpUnlock(LockID);

  000ec	e183300a	 orr         r3, r3, r10
  000f0	e5843040	 str         r3, [r4, #0x40]
  000f4	eb000000	 bl          XllpUnlock
  000f8		 |$L985|

; 667  : 	}
; 668  : 	if(aSet0)

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

; 669  : 	{
; 670  : 		LockID = XllpLock(GFER0);

  00100	e3a00010	 mov         r0, #0x10
  00104	eb000000	 bl          XllpLock

; 671  : 		pGPIO->GFER0=((pGPIO->GFER0)|aMask0);

  00108	e594303c	 ldr         r3, [r4, #0x3C]

; 672  : 		XllpUnlock(LockID);

  0010c	e1833009	 orr         r3, r3, r9
  00110	e584303c	 str         r3, [r4, #0x3C]
  00114	eb000000	 bl          XllpUnlock
  00118		 |$L986|

; 673  : 	}
; 674  : 	}

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

			 ENDP  ; |XllpGpioSetFallingEdgeDetectEnable|

	EXPORT	|XllpGpioGetEdgeDetectStatus|

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

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

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

  00000		 |XllpGpioGetEdgeDetectStatus| PROC

; 685  : 	{

  00000		 |$L1467|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1465|

; 686  : 	XLLP_UINT32_T aGpioPinMask;
; 687  : 
; 688  : 	aGpioPinMask = 0x1 << (aGpioPin & 0x1F);
; 689  : 
; 690  : 	if(aGpioPin > 95)

  00004	e351005f	 cmp         r1, #0x5F

; 691  : 		return (pGPIO->GEDR3& aGpioPinMask); 

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

; 692  : 	else if(aGpioPin > 63) 

  00018	e351003f	 cmp         r1, #0x3F

; 693  : 		return (pGPIO->GEDR2 & aGpioPinMask);

  0001c	85903050	 ldrhi       r3, [r0, #0x50]
  00020	8a000002	 bhi         |$L1464|

; 694  : 	else if(aGpioPin > 31) 

  00024	e351001f	 cmp         r1, #0x1F

; 695  : 		return (pGPIO->GEDR1 & aGpioPinMask);

  00028	8590304c	 ldrhi       r3, [r0, #0x4C]

; 696  : 	else return (pGPIO->GEDR0 & aGpioPinMask);

⌨️ 快捷键说明

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