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

📄 xllp_gpio.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  000a0	eb000000	 bl          XllpLock

; 218  : 		pGPIO->GPDR3=((pGPIO->GPDR3| aMask3)&~XLLP_GPIO_PIN_RESERVED_BITS);

  000a4	e594310c	 ldr         r3, [r4, #0x10C]
  000a8	e183300b	 orr         r3, r3, r11
  000ac	e3c334fe	 bic         r3, r3, #0xFE, 8
  000b0	e584310c	 str         r3, [r4, #0x10C]

; 219  : 		XllpUnlock(LockID);

  000b4	eb000000	 bl          XllpUnlock
  000b8		 |$L781|

; 220  : 	}
; 221  : 	if(aSet2)

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

; 222  : 	{
; 223  : 		LockID = XllpLock(GPDR2);

  000c0	e3a00006	 mov         r0, #6
  000c4	eb000000	 bl          XllpLock

; 224  : 		pGPIO->GPDR2=((pGPIO->GPDR2)| aMask2);

  000c8	e5943014	 ldr         r3, [r4, #0x14]

; 225  : 		XllpUnlock(LockID);

  000cc	e1833008	 orr         r3, r3, r8
  000d0	e5843014	 str         r3, [r4, #0x14]
  000d4	eb000000	 bl          XllpUnlock
  000d8		 |$L782|

; 226  : 	}
; 227  : 	if(aSet1)

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

; 228  : 	{
; 229  : 		LockID = XllpLock(GPDR1);

  000e0	e3a00005	 mov         r0, #5
  000e4	eb000000	 bl          XllpLock

; 230  : 		pGPIO->GPDR1=((pGPIO->GPDR1)| aMask1);

  000e8	e5943010	 ldr         r3, [r4, #0x10]

; 231  : 		XllpUnlock(LockID);

  000ec	e183300a	 orr         r3, r3, r10
  000f0	e5843010	 str         r3, [r4, #0x10]
  000f4	eb000000	 bl          XllpUnlock
  000f8		 |$L783|

; 232  : 	}
; 233  : 	if(aSet0)

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

; 234  : 	{
; 235  : 		LockID = XllpLock(GPDR0);

  00100	e3a00004	 mov         r0, #4
  00104	eb000000	 bl          XllpLock

; 236  : 		pGPIO->GPDR0=((pGPIO->GPDR0)| aMask0);

  00108	e594300c	 ldr         r3, [r4, #0xC]

; 237  : 		XllpUnlock(LockID);

  0010c	e1833009	 orr         r3, r3, r9
  00110	e584300c	 str         r3, [r4, #0xC]
  00114	eb000000	 bl          XllpUnlock
  00118		 |$L784|

; 238  : 	}
; 239  :     }

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

			 ENDP  ; |XllpGpioSetDirectionOut|

	EXPORT	|XllpGpioSetOutputState1|

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

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

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

  00000		 |XllpGpioSetOutputState1| PROC

; 249  : 	{

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

; 250  : 	XLLP_UINT32_T aGpioPinMask;
; 251  : 	XLLP_UINT32_T aSizeArray;
; 252  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 253  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 254  : 	XLLP_UINT32_T i;
; 255  : 
; 256  : 	//determine size of array
; 257  : 	aSizeArray = aGpioPinArray[0];

  0000c	e5917000	 ldr         r7, [r1]

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

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

; 259  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 260  : 
; 261  : 	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         |$L813|
  00038	e2811004	 add         r1, r1, #4
  0003c	e3a00001	 mov         r0, #1
  00040		 |$L801|

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

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

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

  00048	e353005f	 cmp         r3, #0x5F

; 265  : 		{
; 266  : 			aMask3 |= aGpioPinMask;

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

; 267  : 			aSet3=XLLP_TRUE;

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

; 268  : 		}
; 269  : 		else if(aGpioPinArray[i] > 63)

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

; 270  : 		{
; 271  : 			aMask2 |= aGpioPinMask;

  00060	81866210	 orrhi       r6, r6, r0, lsl r2

; 272  : 			aSet2=XLLP_TRUE;

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

; 273  : 		}
; 274  : 		else if(aGpioPinArray[i] > 31)

  0006c	e353001f	 cmp         r3, #0x1F

; 275  : 		{
; 276  : 			aMask1 |= aGpioPinMask;

  00070	81844210	 orrhi       r4, r4, r0, lsl r2

; 277  : 			aSet1=XLLP_TRUE;

  00074	83a0a001	 movhi       r10, #1

; 278  : 		}
; 279  : 		else
; 280  : 		{
; 281  : 			aMask0 |= aGpioPinMask;

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

; 282  : 			aSet0=XLLP_TRUE;

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

; 283  : 		}
; 284  : 	}
; 285  : 	if(aSet3)

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

; 286  : 		pGPIO->GPSR3=aMask3;

  00094	15805118	 strne       r5, [r0, #0x118]

; 287  : 	if(aSet2)

  00098	e35b0000	 cmp         r11, #0

; 288  : 		pGPIO->GPSR2=aMask2;

  0009c	15806020	 strne       r6, [r0, #0x20]

; 289  : 	if(aSet1)

  000a0	e35a0000	 cmp         r10, #0

; 290  : 		pGPIO->GPSR1=aMask1;

  000a4	1580401c	 strne       r4, [r0, #0x1C]

; 291  : 	if(aSet0)

  000a8	e3580000	 cmp         r8, #0

; 292  : 		pGPIO->GPSR0=aMask0;

  000ac	1580e018	 strne       lr, [r0, #0x18]
  000b0		 |$L813|

; 293  : 	}

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

			 ENDP  ; |XllpGpioSetOutputState1|

	EXPORT	|XllpGpioSetOutput0|

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

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

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

  00000		 |XllpGpioSetOutput0| PROC

; 303  : 	{

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

; 304  : 	XLLP_UINT32_T aGpioPinMask;
; 305  : 	XLLP_UINT32_T aSizeArray;
; 306  : 	XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 307  : 	XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 308  : 	XLLP_UINT32_T i;
; 309  : 
; 310  : 	//determine size of array
; 311  : 	aSizeArray = aGpioPinArray[0];

  0000c	e5917000	 ldr         r7, [r1]

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

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

; 313  : 	aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 314  : 
; 315  : 	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         |$L842|
  00038	e2811004	 add         r1, r1, #4
  0003c	e3a00001	 mov         r0, #1
  00040		 |$L830|

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

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

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

  00048	e353005f	 cmp         r3, #0x5F

; 319  : 		{
; 320  : 			aMask3 |= aGpioPinMask;

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

; 321  : 			aSet3=XLLP_TRUE;

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

; 322  : 		}
; 323  : 		else if(aGpioPinArray[i] > 63)

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

; 324  : 		{
; 325  : 			aMask2 |= aGpioPinMask;

  00060	81866210	 orrhi       r6, r6, r0, lsl r2

; 326  : 			aSet2=XLLP_TRUE;

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

; 327  : 		}
; 328  : 		else if(aGpioPinArray[i] > 31)

  0006c	e353001f	 cmp         r3, #0x1F

; 329  : 		{
; 330  : 			aMask1 |= aGpioPinMask;

  00070	81844210	 orrhi       r4, r4, r0, lsl r2

; 331  : 			aSet1=XLLP_TRUE;

  00074	83a0a001	 movhi       r10, #1

; 332  : 		}
; 333  : 		else
; 334  : 		{
; 335  : 			aMask0 |= aGpioPinMask;

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

; 336  : 			aSet0=XLLP_TRUE;

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

; 337  : 		}
; 338  : 	}
; 339  : 	if(aSet3)

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

; 340  : 		pGPIO->GPCR3=aMask3;

  00094	15805124	 strne       r5, [r0, #0x124]

; 341  : 	if(aSet2)

  00098	e35b0000	 cmp         r11, #0

; 342  : 		pGPIO->GPCR2=aMask2;

  0009c	1580602c	 strne       r6, [r0, #0x2C]

; 343  : 	if(aSet1)

  000a0	e35a0000	 cmp         r10, #0

; 344  : 		pGPIO->GPCR1=aMask1;

  000a4	15804028	 strne       r4, [r0, #0x28]

; 345  : 	if(aSet0)

  000a8	e3580000	 cmp         r8, #0

; 346  : 		pGPIO->GPCR0=aMask0;

  000ac	1580e024	 strne       lr, [r0, #0x24]
  000b0		 |$L842|

; 347  : 	}

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

			 ENDP  ; |XllpGpioSetOutput0|

	EXPORT	|XllpGpioGetRisingDetectEnable|

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

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

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

  00000		 |XllpGpioGetRisingDetectEnable| PROC

; 358  : 	{

  00000		 |$L1341|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1339|

; 359  : 	
; 360  : 	XLLP_UINT32_T aGpioPinMask;
; 361  : 
; 362  : 	aGpioPinMask = 0x1 << (aGpioPin & 0x1F);
; 363  : 
; 364  : 	if(aGpioPin > 95)

  00004	e351005f	 cmp         r1, #0x5F

; 365  : 		return (pGPIO->GRER3& aGpioPinMask);

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

; 366  : 	else if(aGpioPin > 63) 

  00018	e351003f	 cmp         r1, #0x3F

; 367  : 		return (pGPIO->GRER2 & aGpioPinMask);

  0001c	85903038	 ldrhi       r3, [r0, #0x38]
  00020	8a000002	 bhi         |$L1338|

; 368  : 	else if(aGpioPin > 31) 

  00024	e351001f	 cmp         r1, #0x1F

; 369  : 		return (pGPIO->GRER1 & aGpioPinMask);

  00028	85903034	 ldrhi       r3, [r0, #0x34]

; 370  : 	else return (pGPIO->GRER0 & aGpioPinMask);

  0002c	95903030	 ldrls       r3, [r0, #0x30]
  00030		 |$L1338|
  00030	e003021e	 and         r0, r3, lr, lsl r2

; 371  : 	}

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

			 ENDP  ; |XllpGpioGetRisingDetectEnable|

	EXPORT	|XllpGpioSetRisingDetectDisable|

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

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

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

  00000		 |XllpGpioSetRisingDetectDisable| PROC

; 380  : 	{

  00000		 |$L1366|

⌨️ 快捷键说明

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