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

📄 interrupt.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 205  :         //
; 206  :         else if (ulVic2Irq & INT2_RTC)

  0017c	e3150020	 tst       r5, #0x20

; 207  :         {
; 208  :             *VIC2_INTCLEAR = INT2_RTC;

  00180	159f1180	 ldrne     r1, [pc, #0x180]
  00184	13a00020	 movne     r0, #0x20

; 209  :             retval = SYSINTR_RTC_ALARM;   

  00188	13a0600d	 movne     r6, #0xD
  0018c	15810000	 strne     r0, [r1]
  00190	1a000059	 bne       |$L14016|

; 210  :         }
; 211  : 
; 212  :         //
; 213  :         // Check the DMA channels.
; 214  :         //
; 215  :         else if (ulVic1Irq &  INT1_DMAM2P0 )

  00194	e3140080	 tst       r4, #0x80

; 216  :         {
; 217  :             *VIC1_INTCLEAR = INT1_DMAM2P0;

  00198	159f116c	 ldrne     r1, [pc, #0x16C]
  0019c	13a00080	 movne     r0, #0x80

; 218  :             retval = SYSINTR_DMA0;   

  001a0	13a0601f	 movne     r6, #0x1F
  001a4	15810000	 strne     r0, [r1]
  001a8	1a000053	 bne       |$L14016|

; 219  :         }
; 220  :         else if (ulVic1Irq &  INT1_DMAM2P1 )

  001ac	e3140c01	 tst       r4, #1, 24
  001b0	0a000004	 beq       |$L13974|

; 221  :         {
; 222  :             *VIC1_INTCLEAR = INT1_DMAM2P1;

  001b4	e3a00c01	 mov       r0, #1, 24
  001b8		 |$L14233|
  001b8	e59f114c	 ldr       r1, [pc, #0x14C]

; 223  :             retval = SYSINTR_DMA1;   

  001bc	e3a06020	 mov       r6, #0x20
  001c0	e5810000	 str       r0, [r1]

; 224  :         }
; 225  :         else if (ulVic1Irq &  INT1_DMAM2P2 )

  001c4	ea00004c	 b         |$L14016|
  001c8		 |$L13974|
  001c8	e3140c02	 tst       r4, #2, 24

; 226  :         {
; 227  :             *VIC1_INTCLEAR = INT1_DMAM2P2;

  001cc	159f1138	 ldrne     r1, [pc, #0x138]
  001d0	13a00c02	 movne     r0, #2, 24

; 228  :             retval = SYSINTR_DMA2;   

  001d4	13a06021	 movne     r6, #0x21
  001d8	15810000	 strne     r0, [r1]
  001dc	1a000046	 bne       |$L14016|

; 229  :         }
; 230  :         else if (ulVic1Irq &  INT1_DMAM2P3 )

  001e0	e3140b01	 tst       r4, #1, 22

; 231  :         {
; 232  :             *VIC1_INTCLEAR = INT1_DMAM2P3;

  001e4	159f1120	 ldrne     r1, [pc, #0x120]
  001e8	13a00b01	 movne     r0, #1, 22

; 233  :             retval = SYSINTR_DMA3;   

  001ec	13a06022	 movne     r6, #0x22
  001f0	15810000	 strne     r0, [r1]
  001f4	1a000040	 bne       |$L14016|

; 234  :         }
; 235  :         else if (ulVic1Irq &  INT1_DMAM2P4 )

  001f8	e3140b02	 tst       r4, #2, 22

; 236  :         {
; 237  :             *VIC1_INTCLEAR = INT1_DMAM2P4;

  001fc	159f1108	 ldrne     r1, [pc, #0x108]
  00200	13a00b02	 movne     r0, #2, 22

; 238  :             retval = SYSINTR_DMA4;   

  00204	13a06023	 movne     r6, #0x23
  00208	15810000	 strne     r0, [r1]
  0020c	1a00003a	 bne       |$L14016|

; 239  :         }
; 240  :         else if (ulVic1Irq &  INT1_DMAM2P5 )

  00210	e3140a01	 tst       r4, #1, 20

; 241  :         {
; 242  :             *VIC1_INTCLEAR = INT1_DMAM2P5;

  00214	13a00a01	 movne     r0, #1, 20
  00218	1affffe6	 bne       |$L14233|

; 243  :             retval = SYSINTR_DMA1;   
; 244  :         }
; 245  :         else if (ulVic1Irq &  INT1_DMAM2P5 )
; 246  :         {
; 247  :             *VIC1_INTCLEAR = INT1_DMAM2P5;
; 248  :             retval = SYSINTR_DMA5;   
; 249  :         }
; 250  :         else if (ulVic1Irq &  INT1_DMAM2P6 )

  0021c	e3140a02	 tst       r4, #2, 20

; 251  :         {
; 252  :             *VIC1_INTCLEAR = INT1_DMAM2P6;

  00220	159f10e4	 ldrne     r1, [pc, #0xE4]
  00224	13a00a02	 movne     r0, #2, 20

; 253  :             retval = SYSINTR_DMA6;   

  00228	13a06025	 movne     r6, #0x25
  0022c	15810000	 strne     r0, [r1]
  00230	1a000031	 bne       |$L14016|

; 254  :         }
; 255  :         else if (ulVic1Irq &  INT1_DMAM2P7 )

  00234	e3140901	 tst       r4, #1, 18

; 256  :         {
; 257  :             *VIC1_INTCLEAR = INT1_DMAM2P7;

  00238	159f10cc	 ldrne     r1, [pc, #0xCC]
  0023c	13a00901	 movne     r0, #1, 18

; 258  :             retval = SYSINTR_DMA7;   

  00240	13a06026	 movne     r6, #0x26
  00244	15810000	 strne     r0, [r1]
  00248	1a00002b	 bne       |$L14016|

; 259  :         }
; 260  :         else if (ulVic1Irq &  INT1_DMAM2P8 )

  0024c	e3140902	 tst       r4, #2, 18

; 261  :         {
; 262  :             *VIC1_INTCLEAR = INT1_DMAM2P8;

  00250	159f10b4	 ldrne     r1, [pc, #0xB4]
  00254	13a00902	 movne     r0, #2, 18

; 263  :             retval = SYSINTR_DMA8;   

  00258	13a06027	 movne     r6, #0x27
  0025c	15810000	 strne     r0, [r1]
  00260	1a000025	 bne       |$L14016|

; 264  :         }
; 265  :         else if (ulVic1Irq &  INT1_DMAM2P9 )

  00264	e3140801	 tst       r4, #1, 16

; 266  :         {
; 267  :             *VIC1_INTCLEAR = INT1_DMAM2P9;

  00268	159f109c	 ldrne     r1, [pc, #0x9C]
  0026c	13a00801	 movne     r0, #1, 16

; 268  :             retval = SYSINTR_DMA9;   

  00270	13a06028	 movne     r6, #0x28
  00274	15810000	 strne     r0, [r1]
  00278	1a00001f	 bne       |$L14016|

; 269  :         }
; 270  :         
; 271  :         //
; 272  :         // Check to see if it is a touch pad interrupt.
; 273  :         //
; 274  :         else if (ulVic1Irq  & INT1_TOUCH)

  0027c	e3140101	 tst       r4, #1, 2

; 275  :         {
; 276  :             *VIC1_INTCLEAR = INT1_TOUCH;

  00280	159f1084	 ldrne     r1, [pc, #0x84]
  00284	13a00101	 movne     r0, #1, 2

; 277  :             retval = SYSINTR_TOUCH;   

  00288	13a06011	 movne     r6, #0x11
  0028c	15810000	 strne     r0, [r1]
  00290	1a000019	 bne       |$L14016|

; 278  :         }
; 279  :         //
; 280  :         // See if it is timer 2 also used for the touch interface.
; 281  :         //
; 282  :         else if (ulVic1Irq  & INT1_TIMER2)

  00294	e3140020	 tst       r4, #0x20

; 283  :         {
; 284  :             *VIC1_INTCLEAR = INT1_TIMER2;

  00298	159f106c	 ldrne     r1, [pc, #0x6C]
  0029c	13a00020	 movne     r0, #0x20

; 285  :             retval = SYSINTR_TIMER2;   

  002a0	13a0601d	 movne     r6, #0x1D
  002a4	15810000	 strne     r0, [r1]
  002a8	1a000013	 bne       |$L14016|

; 286  :         }
; 287  :         //
; 288  :         // Check to see if it the IRDA interrupt.
; 289  :         //
; 290  :         else if (ulVic2Irq &  INT2_IRDA )

  002ac	e3150040	 tst       r5, #0x40

; 291  :         {
; 292  :             *VIC2_INTCLEAR = INT2_IRDA;

  002b0	159f1050	 ldrne     r1, [pc, #0x50]
  002b4	13a00040	 movne     r0, #0x40

; 293  :             retval = SYSINTR_IR;   

  002b8	13a06016	 movne     r6, #0x16
  002bc	15810000	 strne     r0, [r1]
  002c0	1a00000d	 bne       |$L14016|

; 294  :         }
; 295  :         //
; 296  :         // Check to see if it is the IDE interrupt.
; 297  :         //
; 298  :         else if (ulVic2Irq & INT2_EXT3)

  002c4	e3150c01	 tst       r5, #1, 24

; 299  :         {
; 300  :             *VIC2_INTCLEAR = INT2_EXT3;

  002c8	159f1038	 ldrne     r1, [pc, #0x38]
  002cc	13a00c01	 movne     r0, #1, 24

; 301  :             retval = SYSINTR_IDE;   

  002d0	13a06013	 movne     r6, #0x13
  002d4	15810000	 strne     r0, [r1]
  002d8	1a000007	 bne       |$L14016|

; 302  :         }
; 303  :         else if(ulVic2Irq & INT2_GPIO6)

  002dc	e3150802	 tst       r5, #2, 16
  002e0	0a000005	 beq       |$L14016|

; 304  :         {
; 305  :             OEMWriteDebugByte('P') ;

  002e4	e3a00050	 mov       r0, #0x50
  002e8	eb000000	 bl        OEMWriteDebugByte

; 306  :             *VIC2_INTCLEAR = INT2_EXT3;

  002ec	e59f3014	 ldr       r3, [pc, #0x14]
  002f0	e3a00c01	 mov       r0, #1, 24
  002f4	e5830000	 str       r0, [r3]

; 307  :             // OEMEthISR();
; 308  :             retval = SYSINTR_PCMCIA_LEVEL;   

  002f8	e3a06014	 mov       r6, #0x14
  002fc		 |$L14016|

; 309  :         }
; 310  :         else
; 311  :         {
; 312  :             // OEMWriteDebugByte('U') ;
; 313  :             // NKDbgPrintfW(L"U = 0x%x, 0x%x,0x%x, 0x%x, 0x%x, 0x%x\r\n", ulVic1Irq, ulVic2Irq, ulVic1Last,ulVic2Last,fPS2Int, ulDummyRead);
; 314  :         }
; 315  : 
; 316  :     }
; 317  :     // ulVic1Last = ulVic1Irq;
; 318  :     // ulVic2Last = ulVic2Irq;
; 319  :     
; 320  :     return retval;

  002fc	e1a00006	 mov       r0, r6

; 321  : }

  00300	e8bd40f0	 ldmia     sp!, {r4 - r7, lr}
  00304	e12fff1e	 bx        lr
  00308		 |$L14238|
  00308	b00c0014	 DCD       0xb00c0014
  0030c	b00b0014	 DCD       0xb00b0014
  00310	00000000	 DCD       |fPS2Int|
  00314	00000000	 DCD       |fResumeFlag|
  00318	00000000	 DCD       |wNumInterrupts|
  0031c	00000000	 DCD       |dwIsrTime1|
  00320	00000000	 DCD       |fIntrTime|
  00324	b08a000c	 DCD       0xb08a000c
  00328	00000000	 DCD       |gdwInterruptMask2|
  0032c	00000000	 DCD       |fInterruptFlag|
  00330		 |$M14235|

			 ENDP  ; |OEMInterruptHandler|

	IMPORT	|dwReschedTime|
	IMPORT	|CurMSec|
	IMPORT	|CurTicks|
	IMPORT	|dwReschedIncrement|
	IMPORT	|PProfileInterrupt|
	IMPORT	|dwIsrTime2|
	IMPORT	|dwIntrTimeCountdown|
	IMPORT	|dwIntrTimeCountdownRef|

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

  00000			 AREA	 |.pdata$$TimerInterrupt|, PDATA, SELECTION=5, ASSOC=|.text| { |TimerInterrupt| } ; comdat associative
|$T14246| DCD	|TimerInterrupt|
	DCD	0x40005401
; Function compile flags: /Ogsy

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

  00000		 |TimerInterrupt| PROC

; 332  : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M14244|

; 333  :     DWORD           retval = SYSINTR_NOP;
; 334  :     // static int     iCount = 0;
; 335  : 
; 336  :     //
; 337  :     // update the tick count
; 338  :     //
; 339  :     CurTicks.QuadPart += dwReschedIncrement;

  00004	e59f4140	 ldr       r4, [pc, #0x140]
  00008	e59f0138	 ldr       r0, [pc, #0x138]
  0000c	e3a05000	 mov       r5, #0
  00010	e5942000	 ldr       r2, [r4]
  00014	e5901000	 ldr       r1, [r0]
  00018	e5943004	 ldr       r3, [r4, #4]
  0001c	e0922001	 adds      r2, r2, r1
  00020	e2a30000	 adc       r0, r3, #0
  00024	e5842000	 str       r2, [r4]
  00028	e5840004	 str       r0, [r4, #4]

; 340  : 
; 341  :     //
; 342  :     // Print out a 1 every second.  I want to make sure that we are getting ticks.
; 343  :     //
; 344  :     //if(iCount++ == 1000)
; 345  :     //{
; 346  :     //    OEMWriteDebugByte('T') ;
; 347  :     //    iCount          = 0;
; 348  :     //}
; 349  : 
; 350  :     
; 351  :     //
; 352  :     // Call the profile ISR if it's enabled.
; 353  :     //
; 354  :     if (PProfileInterrupt)

  0002c	e59f0110	 ldr       r0, [pc, #0x110]
  00030	e5901000	 ldr       r1, [r0]
  00034	e3510000	 cmp       r1, #0
  00038	0a000009	 beq       |$L14022|

; 355  :     {
; 356  :         retval = PProfileInterrupt();

  0003c	e1a0e00f	 mov       lr, pc
  00040	e12fff11	 bx        r1
  00044	e1a05000	 mov       r5, r0

; 357  :         if(retval == SYSINTR_RESCHED) 

  00048	e3550001	 cmp       r5, #1
  0004c	1a000031	 bne       |$L14032|

; 358  :         {
; 359  :             //
; 360  :             // Update the millisecond counter
; 361  :             //
; 362  :             CurMSec  += RESCHED_PERIOD;

  00050	e59f20d0	 ldr       r2, [pc, #0xD0]
  00054	e5920000	 ldr       r0, [r2]
  00058	e2801001	 add       r1, r0, #1
  0005c	e5821000	 str       r1, [r2]

; 363  :             #if (CE_MAJOR_VER == 0x0003)
; 364  :             DiffMSec += RESCHED_PERIOD;
; 365  :             #endif
; 366  :         }
; 367  :     }
; 368  :     else

  00060	ea00002c	 b         |$L14032|
  00064		 |$L14022|

; 369  :     {   

⌨️ 快捷键说明

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