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

📄 interrupt.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00140	e3100901	 tst         r0, #1, 18
  00144	0a00001f	 beq         |$L15737|

; 238  : 			dwFillCount=4;

  00148	e3a04004	 mov         r4, #4
  0014c		 |$L15404|

; 239  : 
; 240  : 		if( dwFillCount )
; 241  :         {
; 242  :             //
; 243  :             // Check to see if the transmit buffer is enabled.
; 244  :             //
; 245  :             if(sPlayBack.bEnabled )

  0014c	e59f1130	 ldr         r1, [pc, #0x130]
  00150	e5913014	 ldr         r3, [r1, #0x14]
  00154	e3530000	 cmp         r3, #0
  00158	0a000013	 beq         |$L15750|

; 246  :             {
; 247  :                 p = sPlayBack.pulPosition;

  0015c	e5912010	 ldr         r2, [r1, #0x10]

; 248  :                 if(p == sPlayBack.pulBufferHalf)

  00160	e591300c	 ldr         r3, [r1, #0xC]
  00164	e1520003	 cmp         r2, r3

; 249  :                 {
; 250  :                     *VIC1_SOFTINT           = INT1_UNUSED1;
; 251  :                 }
; 252  :                 else if(p >= sPlayBack.pulBufferEnd )

  00168	0a000004	 beq         |$L15764|
  0016c	e5913008	 ldr         r3, [r1, #8]
  00170	e1520003	 cmp         r2, r3
  00174	3a000002	 bcc         |$L15749|

; 253  :                 {
; 254  :                     p = sPlayBack.pulPosition = sPlayBack.pulBuffer;

  00178	e5912000	 ldr         r2, [r1]
  0017c	e5812010	 str         r2, [r1, #0x10]
  00180		 |$L15764|

; 255  :                     *VIC1_SOFTINT           = INT1_UNUSED1;

  00180	e58e5000	 str         r5, [lr]
  00184		 |$L15749|
  00184	e59f50f4	 ldr         r5, [pc, #0xF4]
  00188	e59f60ec	 ldr         r6, [pc, #0xEC]
  0018c		 |$L15413|

; 256  :                 }    
; 257  : 
; 258  : 				while ( dwFillCount -- )
; 259  : 				{
; 260  : 					*SAI_TX0_LEFT  = *p++;

  0018c	e4923004	 ldr         r3, [r2], #4
  00190	e2544001	 subs        r4, r4, #1
  00194	e5853000	 str         r3, [r5]

; 261  : 					*SAI_TX0_RIGHT = *p++;

  00198	e4923004	 ldr         r3, [r2], #4
  0019c	e5863000	 str         r3, [r6]
  001a0	1afffff9	 bne         |$L15413|

; 262  : 				}
; 263  :                 sPlayBack.pulPosition= p;

  001a4	e5812010	 str         r2, [r1, #0x10]

; 264  :             } 
; 265  :             else

  001a8	ea000006	 b           |$L15737|
  001ac		 |$L15750|
  001ac	e59f50cc	 ldr         r5, [pc, #0xCC]
  001b0	e59f60c4	 ldr         r6, [pc, #0xC4]
  001b4	e3a03000	 mov         r3, #0
  001b8		 |$L15419|

; 266  :             {
; 267  : 				while ( dwFillCount -- )
; 268  : 				{
; 269  : 					*SAI_TX0_LEFT  = 0;

  001b8	e5853000	 str         r3, [r5]

; 270  : 					*SAI_TX0_RIGHT = 0;

  001bc	e5863000	 str         r3, [r6]
  001c0	e2544001	 subs        r4, r4, #1
  001c4	1afffffb	 bne         |$L15419|
  001c8		 |$L15737|

; 271  : 				}
; 272  :             }
; 273  :         }
; 274  : 
; 275  : 		dwFillCount=0;
; 276  :         if(ulSAIStatus & GSR_RX0_FIFO_FULL )

  001c8	e3100902	 tst         r0, #2, 18

; 277  : 			dwFillCount=8;

  001cc	13a00008	 movne       r0, #8
  001d0	1a000002	 bne         |$L15425|

; 278  : 		else if(ulSAIStatus & GSR_RX0_FIFO_HALF_FULL )

  001d4	e3100802	 tst         r0, #2, 16
  001d8	0a000021	 beq         |$L15741|

; 279  : 			dwFillCount=4;

  001dc	e3a00004	 mov         r0, #4
  001e0		 |$L15425|

; 280  : 
; 281  : 		if( dwFillCount )
; 282  :         {
; 283  :             //
; 284  :             // Check to see if the recieve buffer is enabled.
; 285  :             //
; 286  :             if(sRecord.bEnabled )

  001e0	e59f1090	 ldr         r1, [pc, #0x90]
  001e4	e5913014	 ldr         r3, [r1, #0x14]
  001e8	e3530000	 cmp         r3, #0
  001ec	0a000014	 beq         |$L15752|

; 287  :             {
; 288  :                 p = sRecord.pulPosition;

  001f0	e5912010	 ldr         r2, [r1, #0x10]

; 289  :                 if(p == sRecord.pulBufferHalf)

  001f4	e591300c	 ldr         r3, [r1, #0xC]
  001f8	e1520003	 cmp         r2, r3

; 290  :                 {
; 291  :                     *VIC1_SOFTINT           = INT1_UNUSED2;
; 292  :                 }
; 293  :                 else if(p >= sRecord.pulBufferEnd )

  001fc	0a000004	 beq         |$L15765|
  00200	e5913008	 ldr         r3, [r1, #8]
  00204	e1520003	 cmp         r2, r3
  00208	3a000003	 bcc         |$L15751|

; 294  :                 {
; 295  :                     p = sRecord.pulPosition = sRecord.pulBuffer;

  0020c	e5912000	 ldr         r2, [r1]

; 296  :                     *VIC1_SOFTINT           = INT1_UNUSED2;

  00210	e5812010	 str         r2, [r1, #0x10]
  00214		 |$L15765|
  00214	e3a03002	 mov         r3, #2
  00218	e58e3000	 str         r3, [lr]
  0021c		 |$L15751|
  0021c	e59fe050	 ldr         lr, [pc, #0x50]
  00220	e59f4048	 ldr         r4, [pc, #0x48]
  00224		 |$L15434|

; 297  :                 }    
; 298  : 
; 299  : 				while ( dwFillCount -- )
; 300  : 				{
; 301  : 					*p++ = *SAI_RX0_LEFT;

  00224	e59e3000	 ldr         r3, [lr]
  00228	e2500001	 subs        r0, r0, #1
  0022c	e4823004	 str         r3, [r2], #4

; 302  : 					*p++ = *SAI_RX0_RIGHT;

  00230	e5943000	 ldr         r3, [r4]
  00234	e4823004	 str         r3, [r2], #4
  00238	1afffff9	 bne         |$L15434|

; 211  :                 *p++ = *pAC97DR;

  0023c	e5812010	 str         r2, [r1, #0x10]

; 212  : 
; 213  :                 sRecord.pulPosition= p;
; 214  :             }
; 215  :             else

  00240	ea000007	 b           |$L15741|
  00244		 |$L15752|

; 303  : 				}
; 304  : 
; 305  :                 sRecord.pulPosition= p;
; 306  :             }
; 307  :             else

  00244	e59fe028	 ldr         lr, [pc, #0x28]
  00248	e59f4020	 ldr         r4, [pc, #0x20]
  0024c		 |$L15440|

; 308  :             {
; 309  : 				while ( dwFillCount -- )
; 310  : 				{
; 311  : 					ulTemp = *SAI_RX0_LEFT;

  0024c	e59e3000	 ldr         r3, [lr]
  00250	e2500001	 subs        r0, r0, #1
  00254	e58d3000	 str         r3, [sp]

; 312  : 					ulTemp = *SAI_RX0_RIGHT;

  00258	e5943000	 ldr         r3, [r4]
  0025c	e58d3000	 str         r3, [sp]
  00260	1afffff9	 bne         |$L15440|
  00264		 |$L15741|

; 313  : 				}
; 314  : 			}
; 315  : 		}
; 316  :     }
; 317  :        
; 318  : }

  00264	e28dd004	 add         sp, sp, #4
  00268	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  0026c	e12fff1e	 bx          lr
  00270		 |$L15772|
  00270	b0820044	 DCD         0xb0820044
  00274	b0820040	 DCD         0xb0820040
  00278	00000000	 DCD         |sRecord|
  0027c	b0820014	 DCD         0xb0820014
  00280	b0820010	 DCD         0xb0820010
  00284	00000000	 DCD         |sPlayBack|
  00288	b0820008	 DCD         0xb0820008
  0028c	b0880014	 DCD         0xb0880014
  00290	b00b0018	 DCD         0xb00b0018
  00294	00000000	 DCD         |fInterruptFlag|
  00298	00000000	 DCD         |gbAC97|
  0029c		 |$M15768|

			 ENDP  ; |OEMInterruptHandlerFIQ|

	EXPORT	|TimerInterrupt|
	EXPORT	|??_C@_1CO@PJFACELA@?$AAI?$AAN?$AAT?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AAl?$AAa?$AAs?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5@| [ DATA ] ; `string'
	EXPORT	|??_C@_1BI@GPLMCHNC@?$AAI?$AAn?$AAt?$AAr?$AAT?$AAi?$AAm?$AAe?$AAr?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
	IMPORT	|dwIntrTimeCountdownRef|
	IMPORT	|PerfCountSinceTick|
	IMPORT	|PerfCountValueSinceTick|
	IMPORT	|NKDbgPrintfW|
	IMPORT	|dwReschedTime|
	IMPORT	|CurMSec|
	IMPORT	|CurTicks|
	IMPORT	|PProfileInterrupt|
	IMPORT	|dwIsrTime1|
	IMPORT	|dwIsrTime2|
	IMPORT	|fIntrTime|
	IMPORT	|wNumInterrupts|
	IMPORT	|dwIntrTimeCountdown|

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

  00000			 AREA	 |.pdata$$TimerInterrupt|, PDATA, SELECTION=5, ASSOC=|.text| { |TimerInterrupt| } ; comdat associative
|$T15783| DCD	|$L15782|
	DCD	0x40008b01

  00000			 AREA	 |.rdata| { |??_C@_1BI@GPLMCHNC@?$AAI?$AAn?$AAt?$AAr?$AAT?$AAi?$AAm?$AAe?$AAr?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BI@GPLMCHNC@?$AAI?$AAn?$AAt?$AAr?$AAT?$AAi?$AAm?$AAe?$AAr?$AA?$AN?$AA?6?$AA?$AA@| DCB "I"
	DCB	0x0, "n", 0x0, "t", 0x0, "r", 0x0, "T", 0x0, "i", 0x0, "m"
	DCB	0x0, "e", 0x0, "r", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1CO@PJFACELA@?$AAI?$AAN?$AAT?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AAl?$AAa?$AAs?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CO@PJFACELA@?$AAI?$AAN?$AAT?$AA?5?$AAl?$AAo?$AAs?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AAl?$AAa?$AAs?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5@| DCB "I"
	DCB	0x0, "N", 0x0, "T", 0x0, " ", 0x0, "l", 0x0, "o", 0x0, "s"
	DCB	0x0, "t", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, " ", 0x0, "l"
	DCB	0x0, "a", 0x0, "s", 0x0, "t", 0x0, " ", 0x0, "%", 0x0, "d"
	DCB	0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |TimerInterrupt| PROC

; 997  : {

  00000		 |$L15782|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004		 |$M15780|

; 998  :     DWORD           retval = SYSINTR_NOP;
; 999  : 	DWORD			dwTimerVal;
; 1000 : 
; 1001 : 	static DWORD dwLastTimerValue=0;
; 1002 : 	static BOOL bFirstTime=TRUE;
; 1003 : 
; 1004 : 	extern volatile DWORD PerfCountValueSinceTick;
; 1005 : 
; 1006 : 	extern void SetSysTimerInterval(DWORD dwTicks);
; 1007 :     // static int     iCount = 0;
; 1008 :     //
; 1009 :     // update the tick count
; 1010 :     //
; 1011 : 
; 1012 : 	if( bFirstTime )

  00004	e59f021c	 ldr         r0, [pc, #0x21C]
  00008	e59f5214	 ldr         r5, [pc, #0x214]

; 1013 : 	{
; 1014 : 		CurTicks.QuadPart=(CurMSec+RESCHED_PERIOD)*983;
; 1015 : 
; 1016 : 		dwLastTimerValue=*TIM_DEBUGVALUELOW;

  0000c	e59f620c	 ldr         r6, [pc, #0x20C]
  00010	e5903000	 ldr         r3, [r0]
  00014	e5958000	 ldr         r8, [r5]
  00018	e3a04000	 mov         r4, #0
  0001c	e3530000	 cmp         r3, #0
  00020	e3a09000	 mov         r9, #0
  00024	0a00000c	 beq         |$L15547|
  00028	e3a02ff5	 mov         r2, #0xF5, 30
  0002c	e3822003	 orr         r2, r2, #3
  00030	e2883001	 add         r3, r8, #1
  00034	e59f11dc	 ldr         r1, [pc, #0x1DC]
  00038	e0020293	 mul         r2, r3, r2
  0003c	e59f31d8	 ldr         r3, [pc, #0x1D8]
  00040	e5812000	 str         r2, [r1]
  00044	e5819004	 str         r9, [r1, #4]
  00048	e5933000	 ldr         r3, [r3]

; 1017 : 		bFirstTime=FALSE;

  0004c	e3a02000	 mov         r2, #0
  00050	e5802000	 str         r2, [r0]
  00054	e5863004	 str         r3, [r6, #4]

; 1018 : 	}
; 1019 : 	else

  00058	ea000015	 b           |$L15549|
  0005c		 |$L15547|

; 1020 : 	{
; 1021 : 		dwTimerVal=*TIM_DEBUGVALUELOW;
; 1022 : 
; 1023 : 		if( (int)(dwTimerVal-dwLastTimerValue)<0 )

  0005c	e59f31b8	 ldr         r3, [pc, #0x1B8]
  00060	e5962004	 ldr         r2, [r6, #4]
  00064	e593e000	 ldr         lr, [r3]
  00068	e05e7002	 subs        r7, lr, r2
  0006c	5a000008	 bpl         |$L15552|

; 1024 : 			CurTicks.QuadPart +=  dwTimerVal + (0xFFFFFFFF - dwLastTimerValue);

  00070	e59f01a0	 ldr         r0, [pc, #0x1A0]
  00074	e2471001	 sub         r1, r7, #1
  00078	e5903000	 ldr         r3, [r0]
  0007c	e5902004	 ldr         r2, [r0, #4]
  00080	e0913003	 adds        r3, r1, r3
  00084	e2a22000	 adc         r2, r2, #0
  00088	e5803000	 str         r3, [r0]
  0008c	e5802004	 str         r2, [r0, #4]

; 1025 : 		else

  00090	ea000006	 b           |$L15553|
  00094		 |$L15552|

; 1026 : 			CurTicks.QuadPart +=  dwTimerVal-dwLastTimerValue;

  00094	e59f117c	 ldr         r1, [pc, #0x17C]
  00098	e5913000	 ldr         r3, [r1]
  0009c	e5912004	 ldr         r2, [r1, #4]
  000a0	e0973003	 adds        r3, r7, r3
  000a4	e2a22000	 adc         r2, r2, #0
  000a8	e5813000	 str         r3, [r1]
  000ac	e5812004	 str         r2, [r1, #4]
  000b0		 |$L15553|

; 1027 : 
; 1028 : 		dwLastTimerValue=dwTimerVal;

  000b0	e586e004	 str         lr, [r6, #4]
  000b4		 |$L15549|

; 1029 : 	}
; 1030 : 
; 1031 : 	//CurTicks.QuadPart = CurTicksCount.QuadPart*508468/983040;// dwReschedIncrement;
; 1032 : 
; 1033 : 
; 1034 :     //
; 1035 :     // Print out a 1 every second.  I want to make sure that we are getting ticks.
; 1036 :     //
; 1037 :     // Call the profile ISR if it's enabled.
; 1038 :     //
; 1039 :     if (PProfileInterrupt)

  000b4	e59f2158	 ldr         r2, [pc, #0x158]
  000b8	e5923000	 ldr         r3, [r2]
  000bc	e3530000	 cmp         r3, #0
  000c0	0a000008	 beq         |$L15554|

; 1040 :     {
; 1041 :         retval = PProfileInterrupt();

  000c4	e1a0e00f	 mov         lr, pc
  000c8	e12fff13	 bx          r3
  000cc	e1a04000	 mov         r4, r0

; 1042 :         if(retval == SYSINTR_RESCHED)

  000d0	e3540001	 cmp         r4, #1
  000d4	1a000040	 bne         |$L15573|

; 1043 :         {
; 1044 :             //
; 1045 :             // Update the millisecond counter
; 1046 :             //
; 1047 :             CurMSec  += RESCHED_PERIOD;

  000d8	e5953000	 ldr         r3, [r5]
  000dc	e2833001	 add         r3, r3, #1
  000e0	e5853000	 str         r3, [r5]

; 1048 :         }
; 1049 :     }
; 1050 :     else

  000e4	ea00003c	 b           |$L15573|
  000e8		 |$L15554|

; 1051 :     {   
; 1052 :         //
; 1053 :         // if we're timing interrupts, keep track of when this one came in
; 1054 :         //
; 1055 : 		static DWORD dwLastCount= 0;
; 1056 : 
; 1057 : 		if( (int)( dwLastCount-  *TIM_TIMER3VALUE )  >800 )

  000e8	e59f7120	 ldr         r7, [pc, #0x120]
  000ec	e5961000	 ldr         r1, [r6]
  000f0	e5973000	 ldr         r3, [r7]
  000f4	e0413003	 sub         r3, r1, r3
  000f8	e3530e32	 cmp         r3, #0x32, 28
  000fc	da000005	 ble         |$L15561|

; 1058 : 		{

⌨️ 快捷键说明

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