📄 debugtimer.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL C:\WINCE500\PLATFORM\Ep93xx\Src\Kernel\Hal\Common\.\debugtimer.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |DebugTimerInit|
; File c:\wince500\platform\ep93xx\src\kernel\hal\common\debugtimer.c
00000 AREA |.text| { |DebugTimerInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DebugTimerInit|, PDATA, SELECTION=5, ASSOC=|.text| { |DebugTimerInit| } ; comdat associative
|$T14267| DCD |$L14266|
DCD 0x40000700
; Function compile flags: /Ogsy
00000 AREA |.text| { |DebugTimerInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DebugTimerInit| PROC
; 37 : {
00000 |$L14266|
00000 |$M14264|
; 38 : *TIM_DEBUGVALUEHIGH = 0;
00000 e59f3010 ldr r3, [pc, #0x10]
00004 e3a02000 mov r2, #0
00008 e5832000 str r2, [r3]
; 39 : *TIM_DEBUGVALUEHIGH = DEBUGVALUEHIGH_ENABLE;
0000c e3a02c01 mov r2, #1, 24
00010 e5832000 str r2, [r3]
; 40 : }
00014 e12fff1e bx lr
00018 |$L14269|
00018 b0810064 DCD 0xb0810064
0001c |$M14265|
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
|$T14280| DCD |$L14279|
DCD 0x40000a00
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetSystemTimeInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetSystemTimeInMsec| PROC
; 47 : {
00000 |$L14279|
00000 |$M14277|
; 48 : DWORD dwValue;
; 49 :
; 50 : dwValue = *TIM_DEBUGVALUELOW;
00000 e59f301c ldr r3, [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 e59f2014 ldr r2, [pc, #0x14]
00008 e5933000 ldr r3, [r3]
0000c e5922000 ldr r2, [r2]
00010 e1a01523 mov r1, r3, lsr #10
00014 e20230ff and r3, r2, #0xFF
00018 e1810b03 orr r0, r1, r3, lsl #22
; 57 : return dwValue;
; 58 : }
0001c e12fff1e bx lr
00020 |$L14282|
00020 b0810064 DCD 0xb0810064
00024 b0810060 DCD 0xb0810060
00028 |$M14278|
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
|$T14291| DCD |$L14290|
DCD 0x40000e01
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetSystemTimeInUSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetSystemTimeInUSec| PROC
; 65 : {
00000 |$L14290|
00000 e24dd008 sub sp, sp, #8
00004 |$M14288|
; 66 : volatile LARGE_INTEGER liValue;
; 67 :
; 68 : //
; 69 : // Must read the low value first.
; 70 : //
; 71 : liValue.LowPart = (ULONG)*TIM_DEBUGVALUELOW;
00004 e59f3028 ldr r3, [pc, #0x28]
; 72 : liValue.HighPart = (ULONG)(*TIM_DEBUGVALUEHIGH & DEBUGVALUEHIGH_MASK);
00008 e59f2020 ldr r2, [pc, #0x20]
0000c e5933000 ldr r3, [r3]
00010 e58d3000 str r3, [sp]
00014 e5923000 ldr r3, [r2]
00018 e20330ff and r3, r3, #0xFF
0001c e58d3004 str r3, [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 |$L14293|
00030 b0810064 DCD 0xb0810064
00034 b0810060 DCD 0xb0810060
00038 |$M14289|
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
|$T14315| DCD |$L14314|
DCD 0x40001601
; Function compile flags: /Ogsy
00000 AREA |.text| { |DelayInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DelayInMsec| PROC
; 87 : {
00000 |$L14314|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M14312|
00004 e3500000 cmp r0, #0
; 88 : DWORD passed, startTime;
; 89 :
; 90 : startTime=GetSystemTimeInMsec();
00008 e59fe044 ldr lr, [pc, #0x44]
0000c e59f403c ldr r4, [pc, #0x3C]
00010 e59e2000 ldr r2, [lr]
00014 e5943000 ldr r3, [r4]
00018 e1a02522 mov r2, r2, lsr #10
0001c e20330ff and r3, r3, #0xFF
00020 e1825b03 orr r5, r2, r3, lsl #22
; 91 : passed=0;
; 92 :
; 93 : //
; 94 : // Get stuck in this loop until
; 95 : //
; 96 : while ( passed < msec)
00024 0a000007 beq |$L14218|
00028 |$L14217|
; 97 : {
; 98 : passed = GetSystemTimeInMsec()-startTime;
00028 e59e3000 ldr r3, [lr]
0002c e5942000 ldr r2, [r4]
00030 e1a01523 mov r1, r3, lsr #10
00034 e20230ff and r3, r2, #0xFF
00038 e1813b03 orr r3, r1, r3, lsl #22
0003c e0433005 sub r3, r3, r5
00040 e1530000 cmp r3, r0
00044 3afffff7 bcc |$L14217|
00048 |$L14218|
; 99 : }
; 100 : }
00048 e8bd4030 ldmia sp!, {r4, r5, lr}
0004c e12fff1e bx lr
00050 |$L14317|
00050 b0810064 DCD 0xb0810064
00054 b0810060 DCD 0xb0810060
00058 |$M14313|
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
|$T14328| DCD |$L14327|
DCD 0x40000a00
; Function compile flags: /Ogsy
00000 AREA |.text| { |DelayInuSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DelayInuSec| PROC
; 110 : {
00000 |$L14327|
00000 |$M14325|
00000 e3500000 cmp r0, #0
; 111 : DWORD passed, startTime;
; 112 :
; 113 : startTime= *TIM_DEBUGVALUELOW;
00004 e59f2018 ldr r2, [pc, #0x18]
00008 e5921000 ldr r1, [r2]
; 114 : passed=0;
; 115 :
; 116 : //
; 117 : // Get stuck in this loop until
; 118 : //
; 119 : while ( passed < uS)
0000c 0a000003 beq |$L14227|
00010 |$L14226|
; 120 : {
; 121 : passed = (*TIM_DEBUGVALUELOW - startTime);
00010 e5923000 ldr r3, [r2]
00014 e0433001 sub r3, r3, r1
00018 e1530000 cmp r3, r0
0001c 3afffffb bcc |$L14226|
00020 |$L14227|
; 122 : }
; 123 : }
00020 e12fff1e bx lr
00024 |$L14330|
00024 b0810060 DCD 0xb0810060
00028 |$M14326|
ENDP ; |DelayInuSec|
EXPORT |OEMQueryPerformanceCounter|
00000 AREA |.text| { |OEMQueryPerformanceCounter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMQueryPerformanceCounter|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMQueryPerformanceCounter| } ; comdat associative
|$T14343| DCD |$L14342|
DCD 0x40001201
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMQueryPerformanceCounter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMQueryPerformanceCounter| PROC
; 163 : {
00000 |$L14342|
00000 e24dd008 sub sp, sp, #8
00004 |$M14340|
00004 e1a01000 mov r1, r0
; 164 : lpliPerformanceCount->QuadPart = (LONGLONG)GetSystemTimeInUSec();
00008 e59f3034 ldr r3, [pc, #0x34]
0000c e59f202c ldr r2, [pc, #0x2C]
; 165 : return TRUE;
00010 e3a00001 mov r0, #1
00014 e5933000 ldr r3, [r3]
00018 e58d3000 str r3, [sp]
0001c e5923000 ldr r3, [r2]
00020 e20330ff and r3, r3, #0xFF
00024 e58d3004 str r3, [sp, #4]
00028 e59d3000 ldr r3, [sp]
0002c e59d2004 ldr r2, [sp, #4]
00030 e5813000 str r3, [r1]
00034 e5812004 str r2, [r1, #4]
; 166 : }
00038 e28dd008 add sp, sp, #8
0003c e12fff1e bx lr
00040 |$L14345|
00040 b0810064 DCD 0xb0810064
00044 b0810060 DCD 0xb0810060
00048 |$M14341|
ENDP ; |OEMQueryPerformanceCounter|
EXPORT |OEMQueryPerformanceFrequency|
00000 AREA |.text| { |OEMQueryPerformanceFrequency| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMQueryPerformanceFrequency|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMQueryPerformanceFrequency| } ; comdat associative
|$T14354| DCD |$L14353|
DCD 0x40000500
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMQueryPerformanceFrequency| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMQueryPerformanceFrequency| PROC
; 208 : {
00000 |$L14353|
00000 |$M14351|
; 209 : lpliPerformanceFreq->HighPart = 0;
00000 e3a03000 mov r3, #0
; 210 : lpliPerformanceFreq->LowPart = TIMER_DEBUG_FREQ;
00004 e3a0280f mov r2, #0xF, 16
00008 e880000c stmia r0, {r2, r3}
; 211 : return TRUE;
0000c e3a00001 mov r0, #1
; 212 : }
00010 e12fff1e bx lr
00014 |$M14352|
ENDP ; |OEMQueryPerformanceFrequency|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -