📄 interrupt.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL C:\WINCE500\PLATFORM\Ep93xx\Src\Kernel\Hal\Common\.\interrupt.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |gfRTCAlarm| [ DATA ]
EXPORT |gdwInterruptMask1| [ DATA ]
EXPORT |gdwInterruptMask2| [ DATA ]
EXPORT |gfResumeFlag| [ DATA ]
00000 AREA |.data|, DATA
COMMON |gbAC97|, 0x4
COMMON |gulTransmitBuffer|, 0x4000
COMMON |gulRecieveBuffer|, 0x4000
00000 AREA |.bss|, NOINIT
|?dwLastTimerValue@?1??TimerInterrupt@@9@9| % 0x4 ; `TimerInterrupt'::`2'::dwLastTimerValue
|?dwLastCount@?6??TimerInterrupt@@9@9| % 0x4 ; `TimerInterrupt'::`7'::dwLastCount
00000 AREA |.data|, DATA
COMMON |sPlayBack|, 0x1c
COMMON |sRecord|, 0x1c
00008 AREA |.bss|, NOINIT
|g_dwLastInterrupt| % 0x4
|gfRTCAlarm| % 0x4
00000 AREA |.data|, DATA
COMMON |gliRTCAlarmTicks|, 0x8
COMMON |fInterruptFlag|, 0x4
00010 AREA |.bss|, NOINIT
|gdwInterruptMask2| % 0x4
00000 AREA |.data|, DATA
COMMON |gdwInterruptWakeMask1|, 0x4
COMMON |gdwInterruptWakeMask2|, 0x4
COMMON |fPS2Int|, 0x4
COMMON |gfSysIntrWakeupMask|, 0x48
COMMON |gdwLastWakeupSource|, 0x4
COMMON |dwTimeValueWhenSuspend|, 0x4
|?bFirstTime@?1??TimerInterrupt@@9@9| DCD 0x1 ; `TimerInterrupt'::`2'::bFirstTime
|gfResumeFlag| DCD 0x1
|gdwInterruptMask1| DCD 0x10
00000 AREA |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB 0x0
DCB "AD", 0x0
% 3
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB 0x0
DCB "LS", 0x0
% 3
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB 0x0
DCB "LS", 0x0
% 3
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB 0x0
DCB "KS", 0x0
% 3
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB 0x0
DCB "DL", 0x0
% 3
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB 0x0
DCB "NG", 0x0
% 3
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB 0x0
DCB "3C", 0x0
% 3
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB 0x0
DCB "3C", 0x0
% 3
DCW 0x8086
DCW 0x1039
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x103a
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x1051
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x1229
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x2449
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
EXPORT |OEMInterruptHandlerFIQ|
; File c:\wince500\platform\ep93xx\src\kernel\hal\common\interrupt.c
00000 AREA |.text| { |OEMInterruptHandlerFIQ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMInterruptHandlerFIQ|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMInterruptHandlerFIQ| } ; comdat associative
|$T15770| DCD |$L15769|
DCD 0x4000a702
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMInterruptHandlerFIQ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMInterruptHandlerFIQ| PROC
; 138 : {
00000 |$L15769|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M15767|
; 139 : volatile register ULONG ulTemp;
; 140 : register ULONG *p;
; 141 :
; 142 :
; 143 : // Fake CPUEnterIdle needs to know about interrupt firing.
; 144 : fInterruptFlag = TRUE;
; 145 :
; 146 : if(gbAC97)
00008 e59f3288 ldr r3, [pc, #0x288]
0000c e59f2280 ldr r2, [pc, #0x280]
00010 e3a05001 mov r5, #1
00014 e5933000 ldr r3, [r3]
; 147 : {
; 148 : //register ULONG ulAC97Status;
; 149 : register ULONG ulAC97ISR;
; 150 : register ULONG *pAC97DR = (ULONG *)AC97CH+(AC97I_DR>>2);
; 151 :
; 152 : // ulAC97Status = AC97CH[AC97I_SR>>2];
; 153 : ulAC97ISR = AC97CH[AC97I_ISR>>2];
; 154 : if(ulAC97ISR & ISR_TIS)
00018 e59fe270 ldr lr, [pc, #0x270]
0001c e5825000 str r5, [r2]
00020 e3530000 cmp r3, #0
00024 0a000040 beq |$L15376|
00028 e59f325c ldr r3, [pc, #0x25C]
0002c e3a0020b mov r0, #0xB, 4
00030 e3800722 orr r0, r0, #0x22, 14
00034 e5934000 ldr r4, [r3]
00038 e3140004 tst r4, #4
0003c 0a000019 beq |$L15389|
; 155 : {
; 156 : //
; 157 : // Check to see if the transmit buffer is enabled.
; 158 : //
; 159 : if(sPlayBack.bEnabled )
00040 e59f223c ldr r2, [pc, #0x23C]
00044 e5923014 ldr r3, [r2, #0x14]
00048 e3530000 cmp r3, #0
0004c 0a000013 beq |$L15383|
; 160 : {
; 161 :
; 162 : p = sPlayBack.pulPosition;
00050 e5921010 ldr r1, [r2, #0x10]
; 163 : if(p == sPlayBack.pulBufferHalf)
00054 e592300c ldr r3, [r2, #0xC]
00058 e1510003 cmp r1, r3
; 164 : {
; 165 : *VIC1_SOFTINT = INT1_UNUSED1;
; 166 : }
; 167 : else if(p >= sPlayBack.pulBufferEnd )
0005c 0a000004 beq |$L15762|
00060 e5923008 ldr r3, [r2, #8]
00064 e1510003 cmp r1, r3
00068 3a000002 bcc |$L15387|
; 168 : {
; 169 : p = sPlayBack.pulPosition = sPlayBack.pulBuffer;
0006c e5921000 ldr r1, [r2]
00070 e5821010 str r1, [r2, #0x10]
00074 |$L15762|
; 170 : *VIC1_SOFTINT = INT1_UNUSED1;
00074 e58e5000 str r5, [lr]
00078 |$L15387|
; 171 : }
; 172 :
; 173 : *pAC97DR = *p++;
00078 e4913004 ldr r3, [r1], #4
0007c e5803000 str r3, [r0]
; 174 : *pAC97DR = *p++;
00080 e4913004 ldr r3, [r1], #4
00084 e5803000 str r3, [r0]
; 175 : *pAC97DR = *p++;
00088 e4913004 ldr r3, [r1], #4
; 176 : *pAC97DR = *p++;
0008c e5803000 str r3, [r0]
00090 e4913004 ldr r3, [r1], #4
; 177 :
; 178 : sPlayBack.pulPosition = p;
00094 e5803000 str r3, [r0]
00098 e5821010 str r1, [r2, #0x10]
; 179 : }
; 180 : else
0009c ea000001 b |$L15389|
000a0 |$L15383|
; 181 : {
; 182 : *pAC97DR = 0;
; 183 : *pAC97DR = 0;
; 184 : *pAC97DR = 0;
; 185 : *pAC97DR = 0;
000a0 e3a03000 mov r3, #0
000a4 e5803000 str r3, [r0]
000a8 |$L15389|
; 186 : }
; 187 : }
; 188 :
; 189 : //if(ulAC97Status & SR_RXFF)
; 190 : if(ulAC97ISR & ISR_RIS)
000a8 e3140008 tst r4, #8
000ac 0a00006c beq |$L15741|
; 191 : {
; 192 : //
; 193 : // Check to see if the recieve buffer is enabled.
; 194 : //
; 195 : if(sRecord.bEnabled )
000b0 e59f11c0 ldr r1, [pc, #0x1C0]
000b4 e5913014 ldr r3, [r1, #0x14]
000b8 e3530000 cmp r3, #0
000bc 0a000014 beq |$L15391|
; 196 : {
; 197 : p = sRecord.pulPosition;
000c0 e5912010 ldr r2, [r1, #0x10]
; 198 : if(p == sRecord.pulBufferHalf)
000c4 e591300c ldr r3, [r1, #0xC]
000c8 e1520003 cmp r2, r3
; 199 : {
; 200 : *VIC1_SOFTINT = INT1_UNUSED2;
; 201 : }
; 202 : else if(p >= sRecord.pulBufferEnd )
000cc 0a000004 beq |$L15763|
000d0 e5913008 ldr r3, [r1, #8]
000d4 e1520003 cmp r2, r3
000d8 3a000003 bcc |$L15395|
; 203 : {
; 204 : p = sRecord.pulPosition = sRecord.pulBuffer;
000dc e5912000 ldr r2, [r1]
; 205 : *VIC1_SOFTINT = INT1_UNUSED2;
000e0 e5812010 str r2, [r1, #0x10]
000e4 |$L15763|
000e4 e3a03002 mov r3, #2
000e8 e58e3000 str r3, [lr]
000ec |$L15395|
; 206 : }
; 207 :
; 208 : *p++ = *pAC97DR;
000ec e5903000 ldr r3, [r0]
000f0 e4823004 str r3, [r2], #4
; 209 : *p++ = *pAC97DR;
000f4 e5903000 ldr r3, [r0]
000f8 e4823004 str r3, [r2], #4
; 210 : *p++ = *pAC97DR;
000fc e5903000 ldr r3, [r0]
00100 e4823004 str r3, [r2], #4
; 211 : *p++ = *pAC97DR;
00104 e5903000 ldr r3, [r0]
00108 e4823004 str r3, [r2], #4
0010c e5812010 str r2, [r1, #0x10]
; 212 :
; 213 : sRecord.pulPosition= p;
; 214 : }
; 215 : else
00110 ea000053 b |$L15741|
00114 |$L15391|
; 216 : {
; 217 : ulTemp = *pAC97DR;
00114 e5903000 ldr r3, [r0]
00118 e58d3000 str r3, [sp]
; 218 : ulTemp = *pAC97DR;
0011c e58d3000 str r3, [sp]
; 219 : ulTemp = *pAC97DR;
00120 e58d3000 str r3, [sp]
; 220 : ulTemp = *pAC97DR;
00124 e58d3000 str r3, [sp]
; 221 : }
; 222 : }
; 223 : }
; 224 : else
00128 ea00004d b |$L15741|
0012c |$L15376|
; 225 : {
; 226 : register ULONG ulSAIStatus;
; 227 :
; 228 : DWORD dwFillCount=0;
; 229 : //
; 230 : // Check to see if the Transmit Fifo is emtpy.
; 231 : //
; 232 : ulSAIStatus = *SAI_GSR;
0012c e59f3154 ldr r3, [pc, #0x154]
; 233 :
; 234 :
; 235 : if(ulSAIStatus & GSR_TX0_FIFO_EMPTY )
00130 e5930000 ldr r0, [r3]
00134 e3100a02 tst r0, #2, 20
; 236 : dwFillCount=8;
00138 13a04008 movne r4, #8
0013c 1a000002 bne |$L15404|
; 237 : else if(ulSAIStatus & GSR_TX0_FIFO_HALF_EMPTY )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -