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

📄 debugtimer.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615 

	TTL	d:\wince420\platform\ep931x\kernel\hal\.\debugtimer.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|OEMQueryPerformanceCounter|
	EXPORT	|OEMQueryPerformanceFrequency|
	EXPORT	|pQueryPerformanceCounter| [ DATA ]
	EXPORT	|pQueryPerformanceFrequency| [ DATA ]

  00000			 AREA	 |.data|, DATA
|pQueryPerformanceCounter| DCD |OEMQueryPerformanceCounter|
|pQueryPerformanceFrequency| DCD |OEMQueryPerformanceFrequency|
	EXPORT	|DebugTimerInit|
; File d:\wince420\platform\ep931x\kernel\hal\debugtimer.c

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

  00000			 AREA	 |.pdata$$DebugTimerInit|, PDATA, SELECTION=5, ASSOC=|.text| { |DebugTimerInit| } ; comdat associative
|$T12938| DCD	|DebugTimerInit|
	DCD	0x40000700
; Function compile flags: /Ogsy

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

  00000		 |DebugTimerInit| PROC

; 37   : {

  00000		 |$M12936|

; 38   :     *TIM_DEBUGVALUEHIGH = 0;            

  00000	e59f2010	 ldr       r2, [pc, #0x10]
  00004	e3a00000	 mov       r0, #0

; 39   :     *TIM_DEBUGVALUEHIGH = DEBUGVALUEHIGH_ENABLE;

  00008	e3a01c01	 mov       r1, #1, 24
  0000c	e5820000	 str       r0, [r2]
  00010	e5821000	 str       r1, [r2]

; 40   : }

  00014	e12fff1e	 bx        lr
  00018		 |$L12940|
  00018	b0810064	 DCD       0xb0810064
  0001c		 |$M12937|

			 ENDP  ; |DebugTimerInit|

	EXPORT	|GetSystemTimeInMsec|

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

  00000			 AREA	 |.pdata$$GetSystemTimeInMsec|, PDATA, SELECTION=5, ASSOC=|.text| { |GetSystemTimeInMsec| } ; comdat associative
|$T12949| DCD	|GetSystemTimeInMsec|
	DCD	0x40000a00
; Function compile flags: /Ogsy

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

  00000		 |GetSystemTimeInMsec| PROC

; 47   : {          

  00000		 |$M12947|

; 48   :     DWORD dwValue;
; 49   : 
; 50   :     dwValue = *TIM_DEBUGVALUELOW;

  00000	e59f001c	 ldr       r0, [pc, #0x1C]

; 51   :     dwValue >>= 10;                 
; 52   : 
; 53   : 
; 54   :     // div by 1024 to get msec from usec (should really use
; 55   :     // 1000 instead of 1024, but it is close enough
; 56   :     dwValue|= (*TIM_DEBUGVALUEHIGH | DEBUGVALUEHIGH_MASK)<<22;

  00004	e59f1014	 ldr       r1, [pc, #0x14]
  00008	e5900000	 ldr       r0, [r0]
  0000c	e1a02520	 mov       r2, r0, lsr #10
  00010	e5910000	 ldr       r0, [r1]
  00014	e38010ff	 orr       r1, r0, #0xFF
  00018	e1820b01	 orr       r0, r2, r1, lsl #22

; 57   :     return dwValue;
; 58   : }

  0001c	e12fff1e	 bx        lr
  00020		 |$L12951|
  00020	b0810064	 DCD       0xb0810064
  00024	b0810060	 DCD       0xb0810060
  00028		 |$M12948|

			 ENDP  ; |GetSystemTimeInMsec|

	EXPORT	|GetSystemTimeInUSec|

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

  00000			 AREA	 |.pdata$$GetSystemTimeInUSec|, PDATA, SELECTION=5, ASSOC=|.text| { |GetSystemTimeInUSec| } ; comdat associative
|$T12957| DCD	|GetSystemTimeInUSec|
	DCD	0x40000e01
; Function compile flags: /Ogsy

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

  00000		 |GetSystemTimeInUSec| PROC

; 65   : {          

  00000	e24dd008	 sub       sp, sp, #8
  00004		 |$M12955|

; 66   :     volatile LARGE_INTEGER liValue;
; 67   :     
; 68   :     //
; 69   :     // Must read the low value first.
; 70   :     //
; 71   :     liValue.LowPart = (ULONG)*TIM_DEBUGVALUELOW;

  00004	e59f0028	 ldr       r0, [pc, #0x28]

; 72   :     liValue.HighPart = (ULONG)(*TIM_DEBUGVALUEHIGH | DEBUGVALUEHIGH_MASK);

  00008	e59f1020	 ldr       r1, [pc, #0x20]
  0000c	e5900000	 ldr       r0, [r0]
  00010	e58d0000	 str       r0, [sp]
  00014	e5910000	 ldr       r0, [r1]
  00018	e38010ff	 orr       r1, r0, #0xFF
  0001c	e58d1004	 str       r1, [sp, #4]

; 73   : 
; 74   :     return liValue.QuadPart;

  00020	e59d0000	 ldr       r0, [sp]
  00024	e59d1004	 ldr       r1, [sp, #4]

; 75   : }

  00028	e28dd008	 add       sp, sp, #8
  0002c	e12fff1e	 bx        lr
  00030		 |$L12959|
  00030	b0810064	 DCD       0xb0810064
  00034	b0810060	 DCD       0xb0810060
  00038		 |$M12956|

			 ENDP  ; |GetSystemTimeInUSec|

	EXPORT	|DelayInMsec|

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

  00000			 AREA	 |.pdata$$DelayInMsec|, PDATA, SELECTION=5, ASSOC=|.text| { |DelayInMsec| } ; comdat associative
|$T12968| DCD	|DelayInMsec|
	DCD	0x40000c01
; Function compile flags: /Ogsy

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

  00000		 |DelayInMsec| PROC

; 87   : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M12966|
  00004	e1a05000	 mov       r5, r0

; 88   :     DWORD passed, startTime;
; 89   : 
; 90   :     startTime=GetSystemTimeInMsec();

  00008	eb000000	 bl        GetSystemTimeInMsec
  0000c	e1a04000	 mov       r4, r0

; 91   :     passed=0;
; 92   :     
; 93   :     //
; 94   :     // Get stuck in this loop until 
; 95   :     //
; 96   :     while ( passed < msec) 

  00010	e3550000	 cmp       r5, #0
  00014	9a000003	 bls       |$L12884|
  00018		 |$L12883|

; 97   :     {
; 98   :        passed = GetSystemTimeInMsec()-startTime;

  00018	eb000000	 bl        GetSystemTimeInMsec
  0001c	e0401004	 sub       r1, r0, r4
  00020	e1510005	 cmp       r1, r5
  00024	3afffffb	 bcc       |$L12883|
  00028		 |$L12884|

; 99   :     }
; 100  : }

  00028	e8bd4030	 ldmia     sp!, {r4, r5, lr}
  0002c	e12fff1e	 bx        lr
  00030		 |$M12967|

			 ENDP  ; |DelayInMsec|

	EXPORT	|DelayInuSec|

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

  00000			 AREA	 |.pdata$$DelayInuSec|, PDATA, SELECTION=5, ASSOC=|.text| { |DelayInuSec| } ; comdat associative
|$T12979| DCD	|DelayInuSec|
	DCD	0x40000d01
; Function compile flags: /Ogsy

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

  00000		 |DelayInuSec| PROC

; 110  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M12977|
  00004	e1a03000	 mov       r3, r0

; 111  :     DWORD passed, startTime;
; 112  : 
; 113  :     startTime= *TIM_DEBUGVALUELOW;

  00008	e59f4020	 ldr       r4, [pc, #0x20]

; 114  :     passed=0;
; 115  :     
; 116  :     //
; 117  :     // Get stuck in this loop until 
; 118  :     //
; 119  :     while ( passed < uS) 

  0000c	e3530000	 cmp       r3, #0
  00010	e5942000	 ldr       r2, [r4]
  00014	9a000003	 bls       |$L12893|
  00018		 |$L12892|

; 120  :     {
; 121  :        passed = (*TIM_DEBUGVALUELOW - startTime);

  00018	e5940000	 ldr       r0, [r4]
  0001c	e0401002	 sub       r1, r0, r2
  00020	e1510003	 cmp       r1, r3
  00024	3afffffb	 bcc       |$L12892|
  00028		 |$L12893|

; 122  :     }
; 123  : }

  00028	e8bd4010	 ldmia     sp!, {r4, lr}
  0002c	e12fff1e	 bx        lr
  00030		 |$L12981|
  00030	b0810060	 DCD       0xb0810060
  00034		 |$M12978|

			 ENDP  ; |DelayInuSec|


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

  00000			 AREA	 |.pdata$$OEMQueryPerformanceCounter|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMQueryPerformanceCounter| } ; comdat associative
|$T12988| DCD	|OEMQueryPerformanceCounter|
	DCD	0x40000701
; Function compile flags: /Ogsy

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

  00000		 |OEMQueryPerformanceCounter| PROC

; 163  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M12986|
  00004	e1a04000	 mov       r4, r0

; 164  :     lpliPerformanceCount->QuadPart = (LONGLONG)GetSystemTimeInUSec();    

  00008	eb000000	 bl        GetSystemTimeInUSec
  0000c	e8840003	 stmia     r4, {r0, r1}

; 165  :     return TRUE;

  00010	e3a00001	 mov       r0, #1

; 166  : }

  00014	e8bd4010	 ldmia     sp!, {r4, lr}
  00018	e12fff1e	 bx        lr
  0001c		 |$M12987|

			 ENDP  ; |OEMQueryPerformanceCounter|


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

  00000			 AREA	 |.pdata$$OEMQueryPerformanceFrequency|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMQueryPerformanceFrequency| } ; comdat associative
|$T12996| DCD	|OEMQueryPerformanceFrequency|
	DCD	0x40000600
; Function compile flags: /Ogsy

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

  00000		 |OEMQueryPerformanceFrequency| PROC

; 208  : {

  00000		 |$M12994|

; 209  :     lpliPerformanceFreq->HighPart = 0;

  00000	e3a02000	 mov       r2, #0

; 210  :     lpliPerformanceFreq->LowPart  = TIMER_DEBUG_FREQ;

  00004	e3a0180f	 mov       r1, #0xF, 16
  00008	e5802004	 str       r2, [r0, #4]
  0000c	e5801000	 str       r1, [r0]

; 211  :     return TRUE;

  00010	e3a00001	 mov       r0, #1

; 212  : }

  00014	e12fff1e	 bx        lr
  00018		 |$M12995|

			 ENDP  ; |OEMQueryPerformanceFrequency|

	END

⌨️ 快捷键说明

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