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

📄 interrupt.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 1417 :         gdwInterruptMask2   |= INT2_EXT0;
; 1418 : 		
; 1419 : 		init_edb931xPS2( );
; 1420 : 	}
; 1421 : #endif
; 1422 : 
; 1423 : #ifdef EDB9315A_CIR
; 1424 : 	if( idInt == SYSINTR_PIO_CIR ) 
; 1425 : 	{
; 1426 : 		// Enable EGPIO13 for CIR interrupt.
; 1427 : 		UINT value;
; 1428 : 
; 1429 : 	    //OEMWriteDebugByte('E');
; 1430 : 	    //OEMWriteDebugByte('\r');
; 1431 : 	    //OEMWriteDebugByte('\n');
; 1432 : 	    
; 1433 : 		gnWi = 0;
; 1434 : 		gnKeyCode = 0;
; 1435 : 
; 1436 : 		value = *GPIO_PBDDR;
; 1437 : 		value &= ~0x20;
; 1438 : 		*GPIO_PBDDR = value; // Set port B as input
; 1439 : 
; 1440 : 		value = *GPIO_BINTEN;
; 1441 : 		value &= ~0x20;
; 1442 : 		*GPIO_BINTEN = value; // Disable all interrupt.
; 1443 : 
; 1444 : 		*GPIO_BEOI = 0x20; // Clean all previous interrupt
; 1445 : 
; 1446 : 		value = *GPIO_BINTTYPE1;
; 1447 : 		value |= 0x20; // edge trigure.
; 1448 : 		*GPIO_BINTTYPE1 = value;
; 1449 : 
; 1450 : 		value = *GPIO_BINTTYPE2;
; 1451 : 		value &= ~0x20; // Falling edge 
; 1452 : 		*GPIO_BINTTYPE2 = value;
; 1453 : 
; 1454 : 		value = *GPIO_BINTEN;
; 1455 : 		value |= 0x20; // Enable interrupt
; 1456 : 		*GPIO_BINTEN = value;	
; 1457 : 	}
; 1458 : #endif
; 1459 : 
; 1460 :     INTERRUPTS_ON();

  001ec	eb000000	 bl          INTERRUPTS_ON

; 1461 : 
; 1462 :     return(bRet);

  001f0	e59d000c	 ldr         r0, [sp, #0xC]

; 1463 : }

  001f4	e28dd010	 add         sp, sp, #0x10
  001f8	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  001fc	e12fff1e	 bx          lr
  00200		 |$L15819|
  00200	00000000	 DCD         |gbAC97|
  00204	00000000	 DCD         |gulRecieveBuffer|
  00208	b00b000c	 DCD         0xb00b000c
  0020c	b00b0010	 DCD         0xb00b0010
  00210	00000000	 DCD         |sPlayBack|
  00214	00000000	 DCD         |gulTransmitBuffer|
  00218	00000000	 DCD         |fPS2Int|
  0021c	b00c000c	 DCD         0xb00c000c
  00220	00000000	 DCD         |sRecord|
  00224	00000000	 DCD         |gdwInterruptMask2|
  00228	b00c0010	 DCD         0xb00c0010
  0022c	00000000	 DCD         |gdwInterruptMask1|
  00230		 |$M15815|

			 ENDP  ; |OEMInterruptEnable|

	EXPORT	|OEMInterruptDisable|

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

  00000			 AREA	 |.pdata$$OEMInterruptDisable|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMInterruptDisable| } ; comdat associative
|$T15829| DCD	|$L15828|
	DCD	0x40004e02
; Function compile flags: /Ogsy

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

  00000		 |OEMInterruptDisable| PROC

; 1484 : {

  00000		 |$L15828|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M15826|
  00008	e1a06000	 mov         r6, r0

; 1485 :     // NKDbgPrintfW(L"OEMInterruptDisable: Interrupt #%02d\r\n", idInt);
; 1486 : 
; 1487 :     BOOL    bRet = TRUE;
; 1488 :     ULONG   ulIntMask1, ulIntMask2;
; 1489 : 
; 1490 : 
; 1491 :     bRet = SysIntrNumToInterruptMask(idInt, &ulIntMask1, &ulIntMask2);

  0000c	e28d2004	 add         r2, sp, #4
  00010	e28d1000	 add         r1, sp, #0
  00014	eb000000	 bl          SysIntrNumToInterruptMask

; 1492 :     INTERRUPTS_OFF();

  00018	eb000000	 bl          INTERRUPTS_OFF

; 1493 : 
; 1494 :     if(ulIntMask1)

  0001c	e59d2000	 ldr         r2, [sp]
  00020	e59f410c	 ldr         r4, [pc, #0x10C]
  00024	e59fe104	 ldr         lr, [pc, #0x104]
  00028	e3520000	 cmp         r2, #0

; 1495 :     {
; 1496 :         *VIC1_INTCLEAR      = ulIntMask1;

  0002c	15842000	 strne       r2, [r4]

; 1497 :         gdwInterruptMask1   &= ~ulIntMask1;

  00030	159e3000	 ldrne       r3, [lr]

; 1498 :     }
; 1499 : 
; 1500 :     if(ulIntMask2)

  00034	e59f00f0	 ldr         r0, [pc, #0xF0]
  00038	e59f10e8	 ldr         r1, [pc, #0xE8]
  0003c	11c33002	 bicne       r3, r3, r2
  00040	e59d2004	 ldr         r2, [sp, #4]
  00044	158e3000	 strne       r3, [lr]

; 1501 :     {
; 1502 :         *VIC2_INTCLEAR     = ulIntMask2;
; 1503 :         gdwInterruptMask2  &= ~ulIntMask2;
; 1504 :     }
; 1505 : 
; 1506 :     if(idInt == SYSINTR_PIO_PLAYBACK )

  00048	e59f50d4	 ldr         r5, [pc, #0xD4]
  0004c	e3520000	 cmp         r2, #0
  00050	15802000	 strne       r2, [r0]
  00054	15913000	 ldrne       r3, [r1]
  00058	e59f70c0	 ldr         r7, [pc, #0xC0]
  0005c	e3a08040	 mov         r8, #0x40
  00060	11c33002	 bicne       r3, r3, r2
  00064	e59f20b0	 ldr         r2, [pc, #0xB0]
  00068	15813000	 strne       r3, [r1]
  0006c	e3560024	 cmp         r6, #0x24
  00070	e3a09201	 mov         r9, #1, 4
  00074	1a000011	 bne         |$L15822|

; 1507 :     {
; 1508 :         if(!sRecord.bIntEnabled)

  00078	e5923018	 ldr         r3, [r2, #0x18]
  0007c	e3530000	 cmp         r3, #0
  00080	1a000009	 bne         |$L15659|

; 1509 :         {
; 1510 :             if(gbAC97)

  00084	e5973000	 ldr         r3, [r7]
  00088	e3530000	 cmp         r3, #0

; 1511 :             {
; 1512 :                 *VIC1_INTCLEAR          = INT1_AAC;

  0008c	15848000	 strne       r8, [r4]

; 1513 :                 gdwInterruptMask1       &= ~INT1_AAC;

  00090	159e3000	 ldrne       r3, [lr]
  00094	13c33040	 bicne       r3, r3, #0x40
  00098	158e3000	 strne       r3, [lr]

; 1514 :             }
; 1515 :             else
; 1516 :             {
; 1517 :                 *VIC2_INTCLEAR          = INT2_SAI;

  0009c	05809000	 streq       r9, [r0]

; 1518 :                 gdwInterruptMask2       &= ~INT2_SAI;

  000a0	05913000	 ldreq       r3, [r1]
  000a4	03c33201	 biceq       r3, r3, #1, 4
  000a8	05813000	 streq       r3, [r1]
  000ac		 |$L15659|

; 1519 :             }
; 1520 :         }
; 1521 :         sPlayBack.bEnabled      = FALSE;

  000ac	e3a03000	 mov         r3, #0
  000b0	e5853014	 str         r3, [r5, #0x14]

; 1522 :         sPlayBack.bIntEnabled   = FALSE;

  000b4	e3a03000	 mov         r3, #0
  000b8	e5853018	 str         r3, [r5, #0x18]
  000bc	ea000000	 b           |$L15655|
  000c0		 |$L15822|
  000c0	e5953018	 ldr         r3, [r5, #0x18]
  000c4		 |$L15655|

; 1523 :     }
; 1524 : 
; 1525 :     if(idInt == SYSINTR_PIO_RECORD )

  000c4	e3560025	 cmp         r6, #0x25
  000c8	1a00000f	 bne         |$L15661|

; 1526 :     {
; 1527 :         if(!sPlayBack.bIntEnabled)

  000cc	e3530000	 cmp         r3, #0
  000d0	1a000009	 bne         |$L15665|

; 1528 :         {
; 1529 :             if(gbAC97)

  000d4	e5973000	 ldr         r3, [r7]
  000d8	e3530000	 cmp         r3, #0

; 1530 :             {
; 1531 :                 *VIC1_INTCLEAR          = INT1_AAC;

  000dc	15848000	 strne       r8, [r4]

; 1532 :                 gdwInterruptMask1       &= ~INT1_AAC;

  000e0	159e3000	 ldrne       r3, [lr]
  000e4	13c33040	 bicne       r3, r3, #0x40
  000e8	158e3000	 strne       r3, [lr]

; 1533 :             }
; 1534 :             else
; 1535 :             {
; 1536 :                 *VIC2_INTCLEAR          = INT2_SAI;

  000ec	05809000	 streq       r9, [r0]

; 1537 :                 gdwInterruptMask2       &= ~INT2_SAI;

  000f0	05913000	 ldreq       r3, [r1]
  000f4	03c33201	 biceq       r3, r3, #1, 4
  000f8	05813000	 streq       r3, [r1]
  000fc		 |$L15665|

; 1538 :             }
; 1539 :         }
; 1540 :         sRecord.bEnabled        = FALSE;

  000fc	e3a03000	 mov         r3, #0
  00100	e5823014	 str         r3, [r2, #0x14]

; 1541 :         sRecord.bIntEnabled     = FALSE;

  00104	e3a03000	 mov         r3, #0
  00108	e5823018	 str         r3, [r2, #0x18]
  0010c		 |$L15661|

; 1542 :     }
; 1543 : 
; 1544 : #ifdef EDB9315A_CIR
; 1545 : 	if(idInt == SYSINTR_PIO_CIR )
; 1546 : 	{
; 1547 : 		// Initialize EGPIO13 for CIR interrupt.
; 1548 : 		UINT value;
; 1549 : 
; 1550 : 	    //OEMWriteDebugByte('D');
; 1551 : 	    //OEMWriteDebugByte('\r');
; 1552 : 	    //OEMWriteDebugByte('\n');
; 1553 : 	    
; 1554 : 		value = *GPIO_BINTEN;
; 1555 : 		value &= ~0x20;	// Disable interrupt.
; 1556 : 		*GPIO_BINTEN = value;
; 1557 : 
; 1558 : 		gnWi = 0;
; 1559 : 		gnKeyCode = 0;
; 1560 : 
; 1561 : 	}
; 1562 : #endif
; 1563 : 
; 1564 :     INTERRUPTS_ON();

  0010c	eb000000	 bl          INTERRUPTS_ON

; 1565 : 
; 1566 :     return;
; 1567 : }

  00110	e28dd008	 add         sp, sp, #8
  00114	e8bd43f0	 ldmia       sp!, {r4 - r9, lr}
  00118	e12fff1e	 bx          lr
  0011c		 |$L15831|
  0011c	00000000	 DCD         |sRecord|
  00120	00000000	 DCD         |gbAC97|
  00124	00000000	 DCD         |sPlayBack|
  00128	00000000	 DCD         |gdwInterruptMask2|
  0012c	b00c0014	 DCD         0xb00c0014
  00130	00000000	 DCD         |gdwInterruptMask1|
  00134	b00b0014	 DCD         0xb00b0014
  00138		 |$M15827|

			 ENDP  ; |OEMInterruptDisable|

	EXPORT	|OEMInterruptDone|

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

  00000			 AREA	 |.pdata$$OEMInterruptDone|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMInterruptDone| } ; comdat associative
|$T15840| DCD	|$L15839|
	DCD	0x40001d02
; Function compile flags: /Ogsy

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

  00000		 |OEMInterruptDone| PROC

; 1588 : {

  00000		 |$L15839|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M15837|
  00008	e1a04000	 mov         r4, r0

; 1589 :     BOOL    bRet = TRUE;
; 1590 :     ULONG   ulIntMask1, ulIntMask2;
; 1591 : 
; 1592 : 
; 1593 :     bRet = SysIntrNumToInterruptMask(idInt, &ulIntMask1, &ulIntMask2);

  0000c	e28d2004	 add         r2, sp, #4
  00010	e28d1000	 add         r1, sp, #0
  00014	eb000000	 bl          SysIntrNumToInterruptMask

; 1594 : 
; 1595 :     INTERRUPTS_OFF();

  00018	eb000000	 bl          INTERRUPTS_OFF

; 1596 : 
; 1597 :     // NOTE: we expect the interrupt to be turned off at the device.  The
; 1598 :     // state isn't latched in any board-level registers.
; 1599 : 
; 1600 :     // Enable interrupt.
; 1601 :     //OEMInterruptEnable(idInt, NULL, 0);
; 1602 :     if(idInt == SYSINTR_PIO_PLAYBACK )

  0001c	e59f304c	 ldr         r3, [pc, #0x4C]
  00020	e3540024	 cmp         r4, #0x24

; 1603 :     {
; 1604 :         *VIC1_SOFTINTCLEAR  = INT1_UNUSED1;

  00024	03a02001	 moveq       r2, #1
  00028	05832000	 streq       r2, [r3]

; 1605 :     }
; 1606 :     if(idInt == SYSINTR_PIO_RECORD )

  0002c	e3540025	 cmp         r4, #0x25

; 1607 :     {
; 1608 :         *VIC1_SOFTINTCLEAR  = INT1_UNUSED2;

  00030	03a02002	 moveq       r2, #2
  00034	05832000	 streq       r2, [r3]

; 1609 :     }
; 1610 :     
; 1611 : #ifdef EDB9315A_CIR
; 1612 : 	if(idInt == SYSINTR_PIO_CIR )
; 1613 : 	{
; 1614 : 		UINT value;
; 1615 : 		
; 1616 : 	    //OEMWriteDebugByte('N');
; 1617 : 	    //OEMWriteDebugByte('\r');
; 1618 : 	    //OEMWriteDebugByte('\n');
; 1619 : 
; 1620 : 		//gnWi = 0;
; 1621 : 		//gnKeyCode = 0;
; 1622 : 
; 1623 : 		*GPIO_BEOI = 0x20; // Clean previous interrupt
; 1624 : 
; 1625 : 		value = *GPIO_BINTEN;
; 1626 : 		value |= 0x20; // Enable interrupt
; 1627 : 		*GPIO_BINTEN = value;	
; 1628 : 	}
; 1629 : #endif
; 1630 : 
; 1631 :     if(ulIntMask1)

  00038	e59d2000	 ldr         r2, [sp]
  0003c	e3520000	 cmp         r2, #0

; 1632 :     {
; 1633 :         *VIC1_INTENABLE     = ulIntMask1;

  00040	159f3024	 ldrne       r3, [pc, #0x24]
  00044	15832000	 strne       r2, [r3]

; 1634 :         // ASSERT(gdwInterruptMask1 & ulIntMask1);
; 1635 :     }
; 1636 : 
; 1637 :     if(ulIntMask2)

  00048	e59d2004	 ldr         r2, [sp, #4]
  0004c	e3520000	 cmp         r2, #0

; 1638 :     {
; 1639 :         *VIC2_INTENABLE     = ulIntMask2;

  00050	159f3010	 ldrne       r3, [pc, #0x10]
  00054	15832000	 strne       r2, [r3]

; 1640 :         // ASSERT(gdwInterruptMask2 & ulIntMask2);
; 1641 :     }
; 1642 : 
; 1643 : 
; 1644 :     INTERRUPTS_ON();

  00058	eb000000	 bl          INTERRUPTS_ON

; 1645 : 
; 1646 : }

  0005c	e28dd008	 add         sp, sp, #8
  00060	e8bd4010	 ldmia       sp!, {r4, lr}
  00064	e12fff1e	 bx          lr
  00068		 |$L15842|
  00068	b00c0010	 DCD         0xb00c0010
  0006c	b00b0010	 DCD         0xb00b0010
  00070	b00b001c	 DCD         0xb00b001c
  00074		 |$M15838|

			 ENDP  ; |OEMInterruptDone|

	EXPORT	|OEMInitInterrupts|

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

  00000			 AREA	 |.pdata$$OEMInitInterrupts|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMInitInterrupts| } ; comdat associative
|$T15848| DCD	|$L15847|
	DCD	0x40004e01
; Functi

⌨️ 快捷键说明

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