📄 interrupt.cod
字号:
00120 |$L15601|
; 1216 :
; 1217 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 1218 :
; 1219 : case SYSINTR_PS2_PORT:
; 1220 :
; 1221 : //RETAILMSG(1, (TEXT("SYSINTR_PS2_PORT\r\n")));
; 1222 : *pulInterruptMask1 = 0;
; 1223 : *pulInterruptMask2 = 0; // the PS2 KeyBoard driver only see a pseudo interrupt. so don't care the interrupt.
; 1224 : break;
; 1225 :
; 1226 : #endif
; 1227 :
; 1228 :
; 1229 : #ifdef EP93XX_SD_MMC
; 1230 :
; 1231 : case SYSINTR_CARD_RESPONSE:
; 1232 : //RETAILMSG(1,(L"SD_MMC response done\n"));
; 1233 : *pulInterruptMask1 = 0;
; 1234 : *pulInterruptMask2 = INT2_EXT1;
; 1235 : break;
; 1236 :
; 1237 : case SYSINTR_CARD_DETECT:
; 1238 : *pulInterruptMask1 = 0;
; 1239 : *pulInterruptMask2 = INT2_EXT1;
; 1240 : break;
; 1241 :
; 1242 : #elif EP93XX_MS_CARD
; 1243 :
; 1244 : case SYSINTR_CARD_RESPONSE:
; 1245 :
; 1246 : *pulInterruptMask1 = 0;
; 1247 : *pulInterruptMask2 = INT2_EXT2;
; 1248 : break;
; 1249 :
; 1250 : case SYSINTR_CARD_DETECT:
; 1251 : *pulInterruptMask1 = 0;
; 1252 : *pulInterruptMask2 = INT2_EXT2;
; 1253 : break;
; 1254 : #endif
; 1255 :
; 1256 : #ifdef EP93XX_USB_SLAVE
; 1257 :
; 1258 : case SYSINTR_USBSLAVE:
; 1259 :
; 1260 : //RETAILMSG(1, (TEXT("SYSINTR_PS2_PORT\r\n")));
; 1261 : *pulInterruptMask1 = 0;
; 1262 : *pulInterruptMask2 = INT2_EXT0; // the PS2 KeyBoard driver only see a pseudo interrupt. so don't care the interrupt.
; 1263 : break;
; 1264 :
; 1265 : #endif
; 1266 :
; 1267 : case SYSINTR_PCMCIA_LEVEL:
; 1268 : *pulInterruptMask1 = 0;
00120 e3a03000 mov r3, #0
00124 e5813000 str r3, [r1]
; 1269 : *pulInterruptMask2 = INT2_PCMCIA_IRQ;
00128 e3a03802 mov r3, #2, 16
; 1270 : break;
0012c ea000010 b |$L15794|
00130 |$L15602|
; 1271 : case SYSINTR_PCMCIA_STATE:
; 1272 : *pulInterruptMask1 = INT1_PCMCIA_CD1 | INT1_PCMCIA_CD2 | INT1_PCMCIA_BVD1;
00130 e3a03607 mov r3, #7, 12
00134 e5813000 str r3, [r1]
; 1273 : *pulInterruptMask2 = INT2_PCMCIA_BVD2;
00138 e3a03902 mov r3, #2, 18
; 1274 : break;
0013c ea00000c b |$L15794|
00140 |$L15603|
; 1275 :
; 1276 : case SYSINTR_DMA_M2M0:
; 1277 : *pulInterruptMask1 = INT1_DMAM2M0;
00140 e3a03802 mov r3, #2, 16
; 1278 : *pulInterruptMask2 = 0;
; 1279 : break;
00144 ea000004 b |$L15795|
00148 |$L15604|
; 1280 : case SYSINTR_DMA_M2M1:
; 1281 : *pulInterruptMask1 = INT1_DMAM2M1;
00148 e3a03701 mov r3, #1, 14
; 1282 : *pulInterruptMask2 = 0;
; 1283 : break;
0014c ea000002 b |$L15795|
00150 |$L15605|
; 1284 :
; 1285 : case SYSINTR_PIO_PLAYBACK:
; 1286 : *pulInterruptMask1 = INT1_UNUSED1;
00150 e3a03001 mov r3, #1
; 1287 : *pulInterruptMask2 = 0;
; 1288 : break;
00154 ea000000 b |$L15795|
00158 |$L15606|
; 1289 :
; 1290 : case SYSINTR_PIO_RECORD:
; 1291 : *pulInterruptMask1 = INT1_UNUSED2;
00158 e3a03002 mov r3, #2
0015c |$L15795|
0015c e5813000 str r3, [r1]
; 1292 : *pulInterruptMask2 = 0;
00160 e3a03000 mov r3, #0
; 1293 : break;
00164 ea000002 b |$L15794|
00168 |$L15607|
; 1297 : bRet = FALSE;
00168 e3a04000 mov r4, #0
0016c |$L15587|
; 1294 : default:
; 1295 : *pulInterruptMask1 = 0;
0016c e3a03000 mov r3, #0
00170 e5813000 str r3, [r1]
00174 |$L15794|
; 1296 : *pulInterruptMask2 = 0;
00174 e5823000 str r3, [r2]
; 1297 : bRet = FALSE;
00178 |$L15584|
; 1298 : break;
; 1299 : }
; 1300 : return bRet;
00178 e1a00004 mov r0, r4
; 1301 : }
0017c e8bd4010 ldmia sp!, {r4, lr}
00180 e12fff1e bx lr
00184 |$M15799|
ENDP ; |SysIntrNumToInterruptMask|
EXPORT |OEMInterruptEnable|
IMPORT |INTERRUPTS_ON|
IMPORT |INTERRUPTS_OFF|
00000 AREA |.text| { |OEMInterruptEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMInterruptEnable|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMInterruptEnable| } ; comdat associative
|$T15817| DCD |$L15816|
DCD 0x40008c02
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMInterruptEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMInterruptEnable| PROC
; 1327 : {
00000 |$L15816|
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 e24dd010 sub sp, sp, #0x10
00008 |$M15814|
00008 e58d2000 str r2, [sp]
0000c e1a0a001 mov r10, r1
00010 e1a07000 mov r7, r0
; 1328 : BOOL bRet = TRUE;
; 1329 : ULONG ulIntMask1, ulIntMask2;
; 1330 :
; 1331 :
; 1332 : bRet = SysIntrNumToInterruptMask(idInt, &ulIntMask1, &ulIntMask2);
00014 e28d2008 add r2, sp, #8
00018 e28d1004 add r1, sp, #4
0001c eb000000 bl SysIntrNumToInterruptMask
00020 e58d000c str r0, [sp, #0xC]
; 1333 :
; 1334 : INTERRUPTS_OFF();
00024 eb000000 bl INTERRUPTS_OFF
; 1335 :
; 1336 :
; 1337 : if(ulIntMask1)
00028 e59de004 ldr lr, [sp, #4]
0002c e59f91d8 ldr r9, [pc, #0x1D8]
00030 e59f41f4 ldr r4, [pc, #0x1F4]
00034 e35e0000 cmp lr, #0
; 1338 : {
; 1339 : *VIC1_INTENABLE = ulIntMask1;
00038 1589e000 strne lr, [r9]
; 1340 : gdwInterruptMask1 |= ulIntMask1;
0003c 15943000 ldrne r3, [r4]
; 1341 : }
; 1342 :
; 1343 : if(ulIntMask2)
00040 e59f81e0 ldr r8, [pc, #0x1E0]
00044 e59f51d8 ldr r5, [pc, #0x1D8]
00048 1183300e orrne r3, r3, lr
0004c e59de008 ldr lr, [sp, #8]
00050 15843000 strne r3, [r4]
; 1344 : {
; 1345 : *VIC2_INTENABLE = ulIntMask2;
; 1346 : gdwInterruptMask2 |= ulIntMask2;
; 1347 : }
; 1348 :
; 1349 : if(idInt ==SYSINTR_SPI)
; 1350 : {
; 1351 : fPS2Int = 0;
; 1352 : }
; 1353 :
; 1354 : if((idInt == SYSINTR_PIO_PLAYBACK) && (cbData == sizeof(PIOBufferParameters)) )
00054 e59fb1c4 ldr r11, [pc, #0x1C4]
00058 e35e0000 cmp lr, #0
0005c 1588e000 strne lr, [r8]
00060 15953000 ldrne r3, [r5]
00064 e59f61b0 ldr r6, [pc, #0x1B0]
00068 1183300e orrne r3, r3, lr
0006c 15853000 strne r3, [r5]
00070 e357001c cmp r7, #0x1C
00074 059f319c ldreq r3, [pc, #0x19C]
00078 03a02000 moveq r2, #0
0007c 05832000 streq r2, [r3]
00080 e59f2188 ldr r2, [pc, #0x188]
00084 e3570024 cmp r7, #0x24
00088 1a000031 bne |$L15631|
0008c e59d3000 ldr r3, [sp]
00090 e353000c cmp r3, #0xC
00094 1a000054 bne |$L15642|
; 1355 : {
; 1356 : PIOBufferParameters *pPIO = (PIOBufferParameters *)pvData;
; 1357 :
; 1358 : sPlayBack.pulPosition = sPlayBack.pulBuffer = pPIO->pulBuffer = gulTransmitBuffer;
00098 e59fe174 ldr lr, [pc, #0x174]
; 1359 : sPlayBack.ulBufferSize = pPIO->ulBufferSize;
; 1360 : sPlayBack.pulBufferEnd = sPlayBack.pulBuffer + (sPlayBack.ulBufferSize>>2);
; 1361 : sPlayBack.pulBufferHalf = sPlayBack.pulBuffer + (sPlayBack.ulBufferSize>>3);
; 1362 : sPlayBack.bEnabled = FALSE;
; 1363 : sPlayBack.bIntEnabled = TRUE;
; 1364 : gbAC97 = pPIO->bAC97;
; 1365 :
; 1366 : if(!sRecord.bIntEnabled )
0009c e59f916c ldr r9, [pc, #0x16C]
000a0 e58ae004 str lr, [r10, #4]
000a4 e582e000 str lr, [r2]
000a8 e582e010 str lr, [r2, #0x10]
000ac e59a1008 ldr r1, [r10, #8]
000b0 e59b0018 ldr r0, [r11, #0x18]
000b4 e1a03121 mov r3, r1, lsr #2
000b8 e1a021a1 mov r2, r1, lsr #3
000bc e5891004 str r1, [r9, #4]
000c0 e08e3103 add r3, lr, r3, lsl #2
000c4 e1a01009 mov r1, r9
000c8 e5813008 str r3, [r1, #8]
000cc e08e3102 add r3, lr, r2, lsl #2
000d0 e1a02009 mov r2, r9
000d4 e582300c str r3, [r2, #0xC]
000d8 e3a03000 mov r3, #0
000dc e5823014 str r3, [r2, #0x14]
000e0 e3a03001 mov r3, #1
000e4 e59f1114 ldr r1, [pc, #0x114]
000e8 e5823018 str r3, [r2, #0x18]
000ec e59a3000 ldr r3, [r10]
000f0 e59f9114 ldr r9, [pc, #0x114]
000f4 e3500000 cmp r0, #0
000f8 e5813000 str r3, [r1]
000fc 1a00003a bne |$L15642|
; 1367 : {
; 1368 : if(pPIO->bAC97)
00100 e59a3000 ldr r3, [r10]
00104 e3530000 cmp r3, #0
00108 0a000009 beq |$L15628|
0010c |$L15813|
; 1369 : {
; 1370 : gdwInterruptMask1 |= INT1_AAC;
0010c e5943000 ldr r3, [r4]
; 1371 : *VIC1_INTSELECT |= INT1_AAC;
00110 e59f20f0 ldr r2, [pc, #0xF0]
; 1372 : *VIC1_INTENABLE = INT1_AAC;
00114 e3a01040 mov r1, #0x40
00118 e3833040 orr r3, r3, #0x40
0011c e5843000 str r3, [r4]
00120 e5923000 ldr r3, [r2]
00124 e3833040 orr r3, r3, #0x40
00128 e5823000 str r3, [r2]
0012c e5891000 str r1, [r9]
; 1373 : }
; 1374 : else
00130 ea00002d b |$L15642|
00134 |$L15628|
; 1375 : {
; 1376 : gdwInterruptMask2 |= INT2_SAI;
00134 e5953000 ldr r3, [r5]
00138 e3833201 orr r3, r3, #1, 4
0013c e5853000 str r3, [r5]
; 1377 : *VIC2_INTSELECT |= INT2_SAI;
00140 e5963000 ldr r3, [r6]
00144 e3833201 orr r3, r3, #1, 4
00148 e5863000 str r3, [r6]
; 1378 : *VIC2_INTENABLE = INT2_SAI;
0014c e3a03201 mov r3, #1, 4
00150 e5883000 str r3, [r8]
00154 |$L15631|
; 1379 : }
; 1380 : }
; 1381 : }
; 1382 :
; 1383 : if((idInt == SYSINTR_PIO_RECORD) && (cbData == sizeof(PIOBufferParameters)) )
00154 e3570025 cmp r7, #0x25
00158 1a000023 bne |$L15642|
0015c e59d3000 ldr r3, [sp]
00160 e353000c cmp r3, #0xC
00164 1a000020 bne |$L15642|
; 1384 : {
; 1385 : PIOBufferParameters *pPIO = (PIOBufferParameters *)pvData;
; 1386 :
; 1387 : sRecord.pulPosition = sRecord.pulBuffer = pPIO->pulBuffer = gulRecieveBuffer;
00168 e59fe094 ldr lr, [pc, #0x94]
; 1388 : sRecord.ulBufferSize = pPIO->ulBufferSize;
; 1389 : sRecord.pulBufferEnd = sRecord.pulBuffer + (sRecord.ulBufferSize>>2);
; 1390 : sRecord.pulBufferHalf = sRecord.pulBuffer + (sRecord.ulBufferSize>>3);
; 1391 : sRecord.bEnabled = FALSE;
0016c e3a07000 mov r7, #0
; 1392 : sRecord.bIntEnabled = TRUE;
00170 e58ae004 str lr, [r10, #4]
00174 e58be000 str lr, [r11]
00178 e58be010 str lr, [r11, #0x10]
0017c e59a1008 ldr r1, [r10, #8]
; 1393 : gbAC97 = pPIO->bAC97;
; 1394 :
; 1395 : if(!sPlayBack.bIntEnabled)
00180 e5920018 ldr r0, [r2, #0x18]
00184 e1a03121 mov r3, r1, lsr #2
00188 e08e3103 add r3, lr, r3, lsl #2
0018c e1a021a1 mov r2, r1, lsr #3
00190 e58b1004 str r1, [r11, #4]
00194 e58b3008 str r3, [r11, #8]
00198 e08e3102 add r3, lr, r2, lsl #2
0019c e58b300c str r3, [r11, #0xC]
001a0 e3a03001 mov r3, #1
001a4 e58b7014 str r7, [r11, #0x14]
001a8 e59f2050 ldr r2, [pc, #0x50]
001ac e58b3018 str r3, [r11, #0x18]
001b0 e59a3000 ldr r3, [r10]
001b4 e3500000 cmp r0, #0
001b8 e5823000 str r3, [r2]
001bc 1a00000a bne |$L15642|
; 1396 : {
; 1397 : if(pPIO->bAC97)
001c0 e59a3000 ldr r3, [r10]
001c4 e3530000 cmp r3, #0
; 1398 : {
; 1399 : gdwInterruptMask1 |= INT1_AAC;
; 1400 : *VIC1_INTSELECT |= INT1_AAC;
; 1401 : *VIC1_INTENABLE = INT1_AAC;
; 1402 : }
; 1403 : else
001c8 1affffcf bne |$L15813|
; 1404 : {
; 1405 : gdwInterruptMask2 |= INT2_SAI;
001cc e5953000 ldr r3, [r5]
001d0 e3833201 orr r3, r3, #1, 4
001d4 e5853000 str r3, [r5]
; 1406 : *VIC2_INTSELECT |= INT2_SAI;
001d8 e5963000 ldr r3, [r6]
001dc e3833201 orr r3, r3, #1, 4
001e0 e5863000 str r3, [r6]
; 1407 : *VIC2_INTENABLE = INT2_SAI;
001e4 e3a03201 mov r3, #1, 4
001e8 e5883000 str r3, [r8]
001ec |$L15642|
; 1408 : }
; 1409 : }
; 1410 : }
; 1411 : #ifdef EP93XX_SIMULAT_PS2_KBD
; 1412 : if( idInt == SYSINTR_PS2_PORT ) //Initialize KeyBoard when driver calls InterruptInitialize( )
; 1413 : {
; 1414 : int init_edb931xPS2(void);
; 1415 :
; 1416 : *VIC2_INTENABLE = INT2_EXT0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -