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

📄 xllp_gpio.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  0002c	95903048	 ldrls       r3, [r0, #0x48]
  00030		 |$L1464|
  00030	e003021e	 and         r0, r3, lr, lsl r2

; 697  : 	}

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

			 ENDP  ; |XllpGpioGetEdgeDetectStatus|

	EXPORT	|XllpGpioClearEdgeDetectStatus|

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

  00000			 AREA	 |.pdata$$XllpGpioClearEdgeDetectStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioClearEdgeDetectStatus| } ; comdat associative
|$T1489| DCD	|$L1488|
	DCD	0x40002f02
; Function compile flags: /Ogsy

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

  00000		 |XllpGpioClearEdgeDetectStatus| PROC

; 706  : 	{

  00000		 |$L1488|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M1486|
  00008	e58d0000	 str         r0, [sp]

; 707  : 	XLLP_UINT32_T aGpioPinMask;
; 708  : 	XLLP_UINT32_T aSizeArray;
; 709  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 710  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 711  : 	XLLP_UINT32_T i;
; 712  : 
; 713  : 	//determine size of array
; 714  : 	aSizeArray = aGpioPinArray[0];

  0000c	e5917000	 ldr         r7, [r1]

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

  00010	e3a05000	 mov         r5, #0
  00014	e3a06000	 mov         r6, #0

; 716  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 717  : 	
; 718  : 	for(i=1; i<=aSizeArray; i++)

  00018	e3570001	 cmp         r7, #1
  0001c	e3a04000	 mov         r4, #0
  00020	e3a0e000	 mov         lr, #0
  00024	e3a09000	 mov         r9, #0
  00028	e3a0b000	 mov         r11, #0
  0002c	e3a0a000	 mov         r10, #0
  00030	e3a08000	 mov         r8, #0
  00034	3a00001d	 bcc         |$L1027|
  00038	e2811004	 add         r1, r1, #4
  0003c	e3a00001	 mov         r0, #1
  00040		 |$L1015|

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

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

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

  00048	e353005f	 cmp         r3, #0x5F

; 722  : 		{
; 723  : 			aMask3 |= aGpioPinMask;

  0004c	81855210	 orrhi       r5, r5, r0, lsl r2

; 724  : 			aSet3=XLLP_TRUE;

  00050	83a09001	 movhi       r9, #1
  00054	8a000009	 bhi         |$L1016|

; 725  : 		}
; 726  : 		else if(aGpioPinArray[i] > 63)

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

; 727  : 		{
; 728  : 			aMask2 |= aGpioPinMask;

  00060	81866210	 orrhi       r6, r6, r0, lsl r2

; 729  : 			aSet2=XLLP_TRUE;

  00064	83a0b001	 movhi       r11, #1
  00068	8a000004	 bhi         |$L1016|

; 730  : 		}
; 731  : 		else if(aGpioPinArray[i] > 31)

  0006c	e353001f	 cmp         r3, #0x1F

; 732  : 		{
; 733  : 			aMask1 |= aGpioPinMask;

  00070	81844210	 orrhi       r4, r4, r0, lsl r2

; 734  : 			aSet1=XLLP_TRUE;

  00074	83a0a001	 movhi       r10, #1

; 735  : 		}
; 736  : 		else
; 737  : 		{
; 738  : 			aMask0 |= aGpioPinMask;

  00078	918ee210	 orrls       lr, lr, r0, lsl r2

; 739  : 			aSet0=XLLP_TRUE;

  0007c	93a08001	 movls       r8, #1
  00080		 |$L1016|
  00080	e2811004	 add         r1, r1, #4
  00084	e2577001	 subs        r7, r7, #1
  00088	1affffec	 bne         |$L1015|

; 740  : 		}
; 741  : 	}
; 742  : 	if(aSet3)

  0008c	e59d0000	 ldr         r0, [sp]
  00090	e3590000	 cmp         r9, #0

; 743  : 		pGPIO->GEDR3= aMask3;

  00094	15805148	 strne       r5, [r0, #0x148]

; 744  : 	if(aSet2)

  00098	e35b0000	 cmp         r11, #0

; 745  : 		pGPIO->GEDR2= aMask2;

  0009c	15806050	 strne       r6, [r0, #0x50]

; 746  : 	if(aSet1)

  000a0	e35a0000	 cmp         r10, #0

; 747  : 		pGPIO->GEDR1= aMask1;

  000a4	1580404c	 strne       r4, [r0, #0x4C]

; 748  : 	if(aSet0)

  000a8	e3580000	 cmp         r8, #0

; 749  : 		pGPIO->GEDR0= aMask0;

  000ac	1580e048	 strne       lr, [r0, #0x48]
  000b0		 |$L1027|

; 750  : 	}

  000b0	e28dd004	 add         sp, sp, #4
  000b4	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  000b8	e12fff1e	 bx          lr
  000bc		 |$M1487|

			 ENDP  ; |XllpGpioClearEdgeDetectStatus|

	EXPORT	|XllpGpioGetAlternateFn|

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

  00000			 AREA	 |.pdata$$XllpGpioGetAlternateFn|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioGetAlternateFn| } ; comdat associative
|$T1502| DCD	|$L1501|
	DCD	0x40001c01
; Function compile flags: /Ogsy

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

  00000		 |XllpGpioGetAlternateFn| PROC

; 762  : 	{

  00000		 |$L1501|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1499|

; 763  : 	XLLP_UINT32_T aGpioPinAFMask;
; 764  : 
; 765  : 	aGpioPinAFMask = 0x3u << ((aGpioPin & 0xF)*2);

  00004	e201300f	 and         r3, r1, #0xF

; 766  : 
; 767  : 	if (aGpioPin>111)

  00008	e351006f	 cmp         r1, #0x6F
  0000c	e1a02083	 mov         r2, r3, lsl #1

; 768  : 		return (pGPIO->GAFR3_U & aGpioPinAFMask);

  00010	85903070	 ldrhi       r3, [r0, #0x70]
  00014	e3a0e003	 mov         lr, #3
  00018	8a000011	 bhi         |$L1498|

; 769  : 	else if (aGpioPin>95)

  0001c	e351005f	 cmp         r1, #0x5F

; 770  : 		return (pGPIO->GAFR3_L & aGpioPinAFMask);

  00020	8590306c	 ldrhi       r3, [r0, #0x6C]
  00024	8a00000e	 bhi         |$L1498|

; 771  : 	else if (aGpioPin>79)

  00028	e351004f	 cmp         r1, #0x4F

; 772  : 		return (pGPIO->GAFR2_U & aGpioPinAFMask);

  0002c	85903068	 ldrhi       r3, [r0, #0x68]
  00030	8a00000b	 bhi         |$L1498|

; 773  : 	else if (aGpioPin>63)

  00034	e351003f	 cmp         r1, #0x3F

; 774  : 		return (pGPIO->GAFR2_L & aGpioPinAFMask);

  00038	85903064	 ldrhi       r3, [r0, #0x64]
  0003c	8a000008	 bhi         |$L1498|

; 775  : 	else if (aGpioPin>47)

  00040	e351002f	 cmp         r1, #0x2F

; 776  : 		return (pGPIO->GAFR1_U & aGpioPinAFMask);

  00044	85903060	 ldrhi       r3, [r0, #0x60]
  00048	8a000005	 bhi         |$L1498|

; 777  : 	else if (aGpioPin>31)

  0004c	e351001f	 cmp         r1, #0x1F

; 778  : 		return (pGPIO->GAFR1_L & aGpioPinAFMask);

  00050	8590305c	 ldrhi       r3, [r0, #0x5C]
  00054	8a000002	 bhi         |$L1498|

; 779  : 	else if (aGpioPin>15)

  00058	e351000f	 cmp         r1, #0xF

; 780  : 		return (pGPIO->GAFR0_U & aGpioPinAFMask);

  0005c	85903058	 ldrhi       r3, [r0, #0x58]

; 781  : 	else return (pGPIO->GAFR0_L & aGpioPinAFMask);

  00060	95903054	 ldrls       r3, [r0, #0x54]
  00064		 |$L1498|
  00064	e003021e	 and         r0, r3, lr, lsl r2

; 782  : 	}

  00068	e49de004	 ldr         lr, [sp], #4
  0006c	e12fff1e	 bx          lr
  00070		 |$M1500|

			 ENDP  ; |XllpGpioGetAlternateFn|

	EXPORT	|XllpGpioSetAlternateFn|

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

  00000			 AREA	 |.pdata$$XllpGpioSetAlternateFn|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioSetAlternateFn| } ; comdat associative
|$T1549| DCD	|$L1548|
	DCD	0x4000ee02
; Function compile flags: /Ogsy

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

  00000		 |XllpGpioSetAlternateFn| PROC

; 796  : 	{

  00000		 |$L1548|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd04c	 sub         sp, sp, #0x4C
  00008		 |$M1546|
  00008	e1a04000	 mov         r4, r0
  0000c	e58d4048	 str         r4, [sp, #0x48]

; 797  : 	XLLP_UINT32_T LockID;
; 798  : 	XLLP_UINT32_T aGpioPinAFMask;
; 799  : 	XLLP_UINT32_T aGpioPinAFValue;
; 800  : 	XLLP_UINT32_T aSizeArray;
; 801  : 	XLLP_UINT32_T aMask0_U, aMask0_L, aMask1_U, aMask1_L; 
; 802  : 	XLLP_UINT32_T aMask2_U, aMask2_L, aMask3_U, aMask3_L;
; 803  : 	XLLP_UINT32_T aAFnV0_U, aAFnV0_L, aAFnV1_U, aAFnV1_L; 
; 804  : 	XLLP_UINT32_T aAFnV2_U, aAFnV2_L, aAFnV3_U, aAFnV3_L;
; 805  : 	XLLP_BOOL_T aSet0_U, aSet0_L, aSet1_U, aSet1_L; 
; 806  : 	XLLP_BOOL_T aSet2_U, aSet2_L, aSet3_U, aSet3_L;
; 807  : 	XLLP_UINT32_T i;
; 808  : 
; 809  : 	//determine size of array
; 810  : 	aSizeArray = aGpioPinArray[0];
; 811  : 	aMask0_U=aMask0_L=aMask1_U=aMask1_L=0;

  00010	e3a03000	 mov         r3, #0
  00014	e58d3018	 str         r3, [sp, #0x18]
  00018	e3a03000	 mov         r3, #0
  0001c	e58d3010	 str         r3, [sp, #0x10]

; 812  : 	aMask2_U=aMask2_L=aMask3_U=aMask3_L=0;
; 813  : 	aAFnV0_U=aAFnV0_L=aAFnV1_U=aAFnV1_L=0;
; 814  : 	aAFnV2_U=aAFnV2_L=aAFnV3_U=aAFnV3_L=0;
; 815  : 	aSet0_U=aSet0_L=aSet1_U=aSet1_L=XLLP_FALSE;
; 816  : 	aSet2_U=aSet2_L=aSet3_U=aSet3_L=XLLP_FALSE;
; 817  : 
; 818  : 	for(i=1; i<=aSizeArray; i++)

  00020	e3a03000	 mov         r3, #0
  00024	e58d3028	 str         r3, [sp, #0x28]
  00028	e3a03000	 mov         r3, #0
  0002c	e58d3020	 str         r3, [sp, #0x20]
  00030	e3a03000	 mov         r3, #0
  00034	e58d3008	 str         r3, [sp, #8]
  00038	e3a03000	 mov         r3, #0
  0003c	e58d3000	 str         r3, [sp]
  00040	e3a03000	 mov         r3, #0
  00044	e58d301c	 str         r3, [sp, #0x1C]
  00048	e3a03000	 mov         r3, #0
  0004c	e58d3014	 str         r3, [sp, #0x14]
  00050	e3a03000	 mov         r3, #0
  00054	e58d302c	 str         r3, [sp, #0x2C]
  00058	e3a03000	 mov         r3, #0
  0005c	e58d3024	 str         r3, [sp, #0x24]
  00060	e3a03000	 mov         r3, #0
  00064	e58d3030	 str         r3, [sp, #0x30]
  00068	e3a03000	 mov         r3, #0
  0006c	e58d300c	 str         r3, [sp, #0xC]
  00070	e3a03000	 mov         r3, #0
  00074	e58d3004	 str         r3, [sp, #4]
  00078	e3a03000	 mov         r3, #0
  0007c	e58d303c	 str         r3, [sp, #0x3C]
  00080	e3a03000	 mov         r3, #0
  00084	e58d3038	 str         r3, [sp, #0x38]
  00088	e3a03000	 mov         r3, #0
  0008c	e58d3044	 str         r3, [sp, #0x44]
  00090	e591e000	 ldr         lr, [r1]
  00094	e3a03000	 mov         r3, #0
  00098	e58d3040	 str         r3, [sp, #0x40]
  0009c	e3a03000	 mov         r3, #0
  000a0	e58d3034	 str         r3, [sp, #0x34]
  000a4	e35e0001	 cmp         lr, #1
  000a8	e3a0b000	 mov         r11, #0
  000ac	e3a07000	 mov         r7, #0
  000b0	e3a08000	 mov         r8, #0
  000b4	e3a06000	 mov         r6, #0
  000b8	e3a05000	 mov         r5, #0
  000bc	e3a09000	 mov         r9, #0
  000c0	3a0000b9	 bcc         |$L1108|
  000c4	e2810004	 add         r0, r1, #4
  000c8	e042a001	 sub         r10, r2, r1
  000cc	e3a04000	 mov         r4, #0
  000d0		 |$L1084|

; 819  : 	{
; 820  : 		aGpioPinAFMask = 0x3u << ((aGpioPinArray[i] & 0xF)*2);

  000d0	e5902000	 ldr         r2, [r0]

; 821  : 		aGpioPinAFValue = aAfValueArray[i] << ((aGpioPinArray[i] & 0xF)*2);

  000d4	e79a1000	 ldr         r1, [r10, +r0]
  000d8	e202300f	 and         r3, r2, #0xF

; 822  : 		if (aGpioPinArray[i]>111)

  000dc	e352006f	 cmp         r2, #0x6F
  000e0	e1a03083	 mov         r3, r3, lsl #1

; 823  : 		{
; 824  : 			aAFnV3_U |= aGpioPinAFValue;
; 825  : 			aMask3_U |= aGpioPinAFMask;

  000e4	83a02003	 movhi       r2, #3
  000e8	81888311	 orrhi       r8, r8, r1, lsl r3
  000ec	81877312	 orrhi       r7, r7, r2, lsl r3

; 826  : 			aSet3_U=XLLP_TRUE;

  000f0	83a05001	 movhi       r5, #1
  000f4	8a00004a	 bhi         |$L1085|

; 827  : 		}
; 828  : 		else if (aGpioPinArray[i]>95)

  000f8	e5902000	 ldr         r2, [r0]
  000fc	e352005f	 cmp         r2, #0x5F

; 829  : 		{
; 830  : 			aAFnV3_L |= aGpioPinAFValue;
; 831  : 			aMask3_L |= aGpioPinAFMask;

  00100	83a02003	 movhi       r2, #3
  00104	818bb312	 orrhi       r11, r11, r2, lsl r3
  00108	81844311	 orrhi       r4, r4, r1, lsl r3

; 832  : 			aSet3_L=XLLP_TRUE;

  0010c	83a06001	 movhi       r6, #1
  00110	8a000043	 bhi         |$L1085|

; 833  : 		}
; 834  : 		else if (aGpioPinArray[i]>79)

  00114	e352004f	 cmp         r2, #0x4F
  00118	9a000008	 bls         |$L1091|

; 835  : 		{
; 836  : 			aAFnV2_U |= aGpioPinAFValue;

  0011c	e59d2004	 ldr         r2, [sp, #4]

; 837  : 			aMask2_U |= aGpioPinAFMask;
; 838  : 			aSet2_U=XLLP_TRUE;

  00120	e3a09001	 mov         r9, #1
  00124	e1822311	 orr         r2, r2, r1, lsl r3
  00128	e3a01003	 mov         r1, #3
  0012c	e58d2004	 str         r2, [sp, #4]
  00130	e59d2000	 ldr         r2, [sp]
  00134	e1822311	 orr         r2, r2, r1, lsl r3
  00138	e58d2000	 str         r2, [sp]

; 839  : 		}
; 840  : 		else if (aGpioPinArray[i]>63)

  0013c	ea000038	 b           |$L1085|
  00140		 |$L1091|
  00140	e352003f	 cmp         r2, #0x3F
  00144	9a000009	 bls         |$L1093|

; 841  : 		{
; 842  : 			aAFnV2_L |= aGpioPinAFValue;

  00148	e59d200c	 ldr         r2, [sp, #0xC]
  0014c	e1822311	 orr         r2, r2, r1, lsl r3

; 843  : 			aMask2_L |= aGpioPinAFMask;

  00150	e3a01003	 mov         r1, #3
  00154	e58d200c	 str         r2, [sp, #0xC]
  00158	e59d2008	 ldr         r2, [sp, #8]
  0015c	e1822311	 orr         r2, r2, r1, lsl r3

; 844  : 			aSet2_L=XLLP_TRUE;

  00160	e3a03001	 mov         r3, #1
  00164	e58d2008	 str         r2, [sp, #8]
  00168	e58d3034	 str         r3, [sp, #0x34]

; 845  : 		}
; 846  : 		else if (aGpioPinArray[i]>47)

  0016c	ea00002c	 b           |$L1085|
  00170		 |$L1093|
  00170	e352002f	 cmp         r2, #0x2F
  00174	9a000009	 bls         |$L1095|

; 847  : 		{
; 848  : 			aAFnV1_U |= aGpioPinAFValue;

  00178	e59d2014	 ldr         r2, [sp, #0x14]
  0017c	e1822311	 orr         r2, r2, r1, lsl r3

; 849  : 			aMask1_U |= aGpioPinAFMask;

  00180	e3a01003	 mov         r1, #3
  00184	e58d2014	 str         r2, [sp, #0x14]
  00188	e59d2010	 ldr         r2, [sp, #0x10]
  0018c	e1822311	 orr         r2, r2, r1, lsl r3

; 850  : 			aSet1_U=XLLP_TRUE;

  00190	e3a03001	 mov         r3, #1
  00194	e58d2010	 str         r2, [sp, #0x10]
  00198	e58d3038	 str         r3, [sp, #0x

⌨️ 快捷键说明

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