📄 debugtimer.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL C:\WINCE500\PLATFORM\Ep93xx\Src\Bootloader\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
|$T37153| DCD |$L37152|
DCD 0x40000800
; Function compile flags: /Ods
00000 AREA |.text| { |DebugTimerInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DebugTimerInit| PROC
; 37 : {
00000 |$L37152|
00000 |$M37150|
; 38 : *TIM_DEBUGVALUEHIGH = 0;
00000 e59f2014 ldr r2, [pc, #0x14]
00004 e3a03000 mov r3, #0
00008 e5823000 str r3, [r2]
; 39 : *TIM_DEBUGVALUEHIGH = DEBUGVALUEHIGH_ENABLE;
0000c e59f2008 ldr r2, [pc, #8]
00010 e3a03c01 mov r3, #1, 24
00014 e5823000 str r3, [r2]
; 40 : }
00018 e12fff1e bx lr
0001c |$L37155|
0001c 80810064 DCD 0x80810064
00020 |$M37151|
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
|$T37162| DCD |$L37161|
DCD 0x40001501
; Function compile flags: /Ods
00000 AREA |.text| { |GetSystemTimeInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetSystemTimeInMsec| PROC
; 47 : {
00000 |$L37161|
00000 e24dd008 sub sp, sp, #8
00004 |$M37159|
; 48 : DWORD dwValue;
; 49 :
; 50 : dwValue = *TIM_DEBUGVALUELOW;
00004 e59f3044 ldr r3, [pc, #0x44]
00008 e5933000 ldr r3, [r3]
0000c e58d3000 str r3, [sp]
; 51 : dwValue >>= 10;
00010 e59d3000 ldr r3, [sp]
00014 e1a03523 mov r3, r3, lsr #10
00018 e58d3000 str r3, [sp]
; 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;
0001c e59f3028 ldr r3, [pc, #0x28]
00020 e5933000 ldr r3, [r3]
00024 e20330ff and r3, r3, #0xFF
00028 e1a02b03 mov r2, r3, lsl #22
0002c e59d3000 ldr r3, [sp]
00030 e1833002 orr r3, r3, r2
00034 e58d3000 str r3, [sp]
; 57 : return dwValue;
00038 e59d3000 ldr r3, [sp]
0003c e58d3004 str r3, [sp, #4]
00040 e59d0004 ldr r0, [sp, #4]
; 58 : }
00044 e28dd008 add sp, sp, #8
00048 e12fff1e bx lr
0004c |$L37164|
0004c 80810064 DCD 0x80810064
00050 80810060 DCD 0x80810060
00054 |$M37160|
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
|$T37171| DCD |$L37170|
DCD 0x40001201
; Function compile flags: /Ods
00000 AREA |.text| { |GetSystemTimeInUSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetSystemTimeInUSec| PROC
; 65 : {
00000 |$L37170|
00000 e24dd010 sub sp, sp, #0x10
00004 |$M37168|
; 66 : volatile LARGE_INTEGER liValue;
; 67 :
; 68 : //
; 69 : // Must read the low value first.
; 70 : //
; 71 : liValue.LowPart = (ULONG)*TIM_DEBUGVALUELOW;
00004 e59f3038 ldr r3, [pc, #0x38]
00008 e5933000 ldr r3, [r3]
0000c e58d3000 str r3, [sp]
; 72 : liValue.HighPart = (ULONG)(*TIM_DEBUGVALUEHIGH & DEBUGVALUEHIGH_MASK);
00010 e59f3028 ldr r3, [pc, #0x28]
00014 e5933000 ldr r3, [r3]
00018 e20330ff and r3, r3, #0xFF
0001c e58d3004 str r3, [sp, #4]
; 73 :
; 74 : return liValue.QuadPart;
00020 e59d2000 ldr r2, [sp]
00024 e59d3004 ldr r3, [sp, #4]
00028 e58d2008 str r2, [sp, #8]
0002c e58d300c str r3, [sp, #0xC]
00030 e59d0008 ldr r0, [sp, #8]
00034 e59d100c ldr r1, [sp, #0xC]
; 75 : }
00038 e28dd010 add sp, sp, #0x10
0003c e12fff1e bx lr
00040 |$L37173|
00040 80810064 DCD 0x80810064
00044 80810060 DCD 0x80810060
00048 |$M37169|
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
|$T37179| DCD |$L37178|
DCD 0x40001804
; Function compile flags: /Ods
00000 AREA |.text| { |DelayInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DelayInMsec| PROC
; 87 : {
00000 |$L37178|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd010 sub sp, sp, #0x10
00010 |$M37176|
; 88 : DWORD passed, startTime;
; 89 :
; 90 : startTime=GetSystemTimeInMsec();
00010 eb000000 bl GetSystemTimeInMsec
00014 e58d0008 str r0, [sp, #8]
00018 e59d3008 ldr r3, [sp, #8]
0001c e58d3000 str r3, [sp]
; 91 : passed=0;
00020 e3a03000 mov r3, #0
00024 e58d3004 str r3, [sp, #4]
00028 |$L37105|
; 92 :
; 93 : //
; 94 : // Get stuck in this loop until
; 95 : //
; 96 : while ( passed < msec)
00028 e59d2004 ldr r2, [sp, #4]
0002c e59d3018 ldr r3, [sp, #0x18]
00030 e1520003 cmp r2, r3
00034 2a000006 bcs |$L37106|
; 97 : {
; 98 : passed = GetSystemTimeInMsec()-startTime;
00038 eb000000 bl GetSystemTimeInMsec
0003c e58d000c str r0, [sp, #0xC]
00040 e59d200c ldr r2, [sp, #0xC]
00044 e59d3000 ldr r3, [sp]
00048 e0423003 sub r3, r2, r3
0004c e58d3004 str r3, [sp, #4]
; 99 : }
00050 eafffff4 b |$L37105|
00054 |$L37106|
; 100 : }
00054 e28dd010 add sp, sp, #0x10
00058 e89d6000 ldmia sp, {sp, lr}
0005c e12fff1e bx lr
00060 |$M37177|
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
|$T37186| DCD |$L37185|
DCD 0x40001704
; Function compile flags: /Ods
00000 AREA |.text| { |DelayInuSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DelayInuSec| PROC
; 110 : {
00000 |$L37185|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M37183|
; 111 : DWORD passed, startTime;
; 112 :
; 113 : startTime= *TIM_DEBUGVALUELOW;
00010 e59f3040 ldr r3, [pc, #0x40]
00014 e5933000 ldr r3, [r3]
00018 e58d3000 str r3, [sp]
; 114 : passed=0;
0001c e3a03000 mov r3, #0
00020 e58d3004 str r3, [sp, #4]
00024 |$L37114|
; 115 :
; 116 : //
; 117 : // Get stuck in this loop until
; 118 : //
; 119 : while ( passed < uS)
00024 e59d2004 ldr r2, [sp, #4]
00028 e59d3010 ldr r3, [sp, #0x10]
0002c e1520003 cmp r2, r3
00030 2a000005 bcs |$L37115|
; 120 : {
; 121 : passed = (*TIM_DEBUGVALUELOW - startTime);
00034 e59f301c ldr r3, [pc, #0x1C]
00038 e5932000 ldr r2, [r3]
0003c e59d3000 ldr r3, [sp]
00040 e0423003 sub r3, r2, r3
00044 e58d3004 str r3, [sp, #4]
; 122 : }
00048 eafffff5 b |$L37114|
0004c |$L37115|
; 123 : }
0004c e28dd008 add sp, sp, #8
00050 e89d6000 ldmia sp, {sp, lr}
00054 e12fff1e bx lr
00058 |$L37188|
00058 80810060 DCD 0x80810060
0005c |$M37184|
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
|$T37195| DCD |$L37194|
DCD 0x40001304
; Function compile flags: /Ods
00000 AREA |.text| { |OEMQueryPerformanceCounter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMQueryPerformanceCounter| PROC
; 163 : {
00000 |$L37194|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd010 sub sp, sp, #0x10
00010 |$M37192|
; 164 : lpliPerformanceCount->QuadPart = (LONGLONG)GetSystemTimeInUSec();
00010 eb000000 bl GetSystemTimeInUSec
00014 e58d100c str r1, [sp, #0xC]
00018 e58d0008 str r0, [sp, #8]
0001c e59d2008 ldr r2, [sp, #8]
00020 e59d3018 ldr r3, [sp, #0x18]
00024 e5832000 str r2, [r3]
00028 e59d200c ldr r2, [sp, #0xC]
0002c e59d3018 ldr r3, [sp, #0x18]
00030 e5832004 str r2, [r3, #4]
; 165 : return TRUE;
00034 e3a03001 mov r3, #1
00038 e58d3000 str r3, [sp]
0003c e59d0000 ldr r0, [sp]
; 166 : }
00040 e28dd010 add sp, sp, #0x10
00044 e89d6000 ldmia sp, {sp, lr}
00048 e12fff1e bx lr
0004c |$M37193|
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
|$T37203| DCD |$L37202|
DCD 0x40001104
; Function compile flags: /Ods
00000 AREA |.text| { |OEMQueryPerformanceFrequency| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMQueryPerformanceFrequency| PROC
; 208 : {
00000 |$L37202|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M37200|
; 209 : lpliPerformanceFreq->HighPart = 0;
00010 e59d300c ldr r3, [sp, #0xC]
00014 e2832004 add r2, r3, #4
00018 e3a03000 mov r3, #0
0001c e5823000 str r3, [r2]
; 210 : lpliPerformanceFreq->LowPart = TIMER_DEBUG_FREQ;
00020 e59d200c ldr r2, [sp, #0xC]
00024 e3a0380f mov r3, #0xF, 16
00028 e5823000 str r3, [r2]
; 211 : return TRUE;
0002c e3a03001 mov r3, #1
00030 e58d3000 str r3, [sp]
00034 e59d0000 ldr r0, [sp]
; 212 : }
00038 e28dd004 add sp, sp, #4
0003c e89d6000 ldmia sp, {sp, lr}
00040 e12fff1e bx lr
00044 |$M37201|
ENDP ; |OEMQueryPerformanceFrequency|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -