📄 ggt_cpu_c.lst
字号:
216: T0MR0 = OSGetFPCLK() / OSGetTick();
00000034 EBFFFFF1 BL OSGetTick?A ; Targ=0x0
00000038 E1A04000 MOV R4,R0
0000003C EBFFFFEF BL OSGetFPCLK?A ; Targ=0x0
00000040 E1A01004 MOV R1,R4 ; OSGetTick?A
00000044 EBFFFFED BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000048 E1A00001 MOV R0,R1
0000004C E1A01000 MOV R1,R0
00000050 E5100000 LDR R0,=0xE0004018
00000054 E5801000 STR R1,[R0,#0x0]
217: VICVectAddr0 = (UINT32)OSClockInt;
00000058 E5101000 LDR R1,=OSClockInt?A ; OSClockInt?A
0000005C E5100000 LDR R0,=0xFFFFF100
00000060 E5801000 STR R1,[R0,#0x0]
218: VICVectCntl0 = 0x20 | 4;
00000064 E3A01024 MOV R1,#0x24
00000068 E5100000 LDR R0,=0xFFFFF200
0000006C E5801000 STR R1,[R0,#0x0]
219: VICIntEnable |= (1 << 4);
00000070 E5100000 LDR R0,=0xFFFFF010
00000074 E5901000 LDR R1,[R0,#0x0]
00000078 E3811010 ORR R1,R1,#0x0010
0000007C E5801000 STR R1,[R0,#0x0]
220: }
00000080 E8BD0010 LDMIA R13!,{R4}
00000084 E8BD0008 LDMIA R13!,{R3}
00000088 E12FFF13 BX R3
0000008C ENDP ; 'OSClockInit?A'
*** CODE SEGMENT '?PR?OSStackAlloc?A?GGT_CPU_c':
237: UINT32* OSStackAlloc(void)
ARM COMPILER V2.32a, GGT_CPU_c 28/02/08 23:05:54 PAGE 10
00000000 E92D4010 STMDB R13!,{R4,LR}
240: return((UINT32*)(((UINT32)BoxAlloc(OSGetBoxStack())) + OSGetSizeStack()));
00000004 EBFFFFFD BL OSGetBoxStack?A ; Targ=0x0
00000008 EBFFFFFC BL BoxAlloc?A ; Targ=0x0
0000000C E1A04000 MOV R4,R0 ; BoxAlloc?A
00000010 EBFFFFFA BL OSGetSizeStack?A ; Targ=0x0
00000014 E0840000 ADD R0,R4,R0 ; OSGetSizeStack?A
241: }
00000018 E8BD0010 LDMIA R13!,{R4}
0000001C E8BD0008 LDMIA R13!,{R3}
00000020 E12FFF13 BX R3
00000024 ENDP ; 'OSStackAlloc?A'
*** CODE SEGMENT '?PR?OSStackInit?A?GGT_CPU_c':
258: UINT32* OSStackInit(void *pTaskBody, UINT32 *pStack, UINT32 Mode, UINT32 TaskParam)
00000000 E92D0030 STMDB R13!,{R4-R5}
00000004 ---- Variable 'TaskParam' assigned to Register 'R3' ----
00000004 E1A04002 MOV R4,R2 ; Mode
00000008 ---- Variable 'Mode' assigned to Register 'R4' ----
00000008 ---- Variable 'pStack' assigned to Register 'R1' ----
00000008 ---- Variable 'pTaskBody' assigned to Register 'R0' ----
261: *--pStack = (UINT32 *)pTaskBody; /* pc */
00000008 E1A05000 MOV R5,R0 ; pTaskBody
0000000C E1A02001 MOV R2,R1 ; pStack
00000010 E2422004 SUB R2,R2,#0x0004 ; pStack
00000014 E1A01002 MOV R1,R2 ; pStack
00000018 E5825000 STR R5,[R2,#0x0]
262: *--pStack = (UINT32 *)pTaskBody; /* lr */
0000001C E1A02000 MOV R2,R0 ; pTaskBody
00000020 E1A00001 MOV R0,R1 ; pStack
00000024 E2400004 SUB R0,R0,#0x0004 ; pStack
00000028 E1A01000 MOV R1,R0 ; pStack
0000002C E5802000 STR R2,[R0,#0x0]
263: *--pStack = 0; /* r12 */
00000030 E3A02000 MOV R2,#0x0
00000034 E1A00001 MOV R0,R1 ; pStack
00000038 E2400004 SUB R0,R0,#0x0004 ; pStack
0000003C E1A01000 MOV R1,R0 ; pStack
00000040 E5802000 STR R2,[R0,#0x0]
264: *--pStack = 0; /* r11 */
00000044 E3A02000 MOV R2,#0x0
00000048 E1A00001 MOV R0,R1 ; pStack
0000004C E2400004 SUB R0,R0,#0x0004 ; pStack
00000050 E1A01000 MOV R1,R0 ; pStack
00000054 E5802000 STR R2,[R0,#0x0]
265: *--pStack = 0; /* r10 */
00000058 E3A02000 MOV R2,#0x0
0000005C E1A00001 MOV R0,R1 ; pStack
00000060 E2400004 SUB R0,R0,#0x0004 ; pStack
00000064 E1A01000 MOV R1,R0 ; pStack
00000068 E5802000 STR R2,[R0,#0x0]
266: *--pStack = 0; /* r9 */
0000006C E3A02000 MOV R2,#0x0
00000070 E1A00001 MOV R0,R1 ; pStack
00000074 E2400004 SUB R0,R0,#0x0004 ; pStack
00000078 E1A01000 MOV R1,R0 ; pStack
0000007C E5802000 STR R2,[R0,#0x0]
267: *--pStack = 0; /* r8 */
00000080 E3A02000 MOV R2,#0x0
00000084 E1A00001 MOV R0,R1 ; pStack
00000088 E2400004 SUB R0,R0,#0x0004 ; pStack
0000008C E1A01000 MOV R1,R0 ; pStack
00000090 E5802000 STR R2,[R0,#0x0]
268: *--pStack = 0; /* r7 */
00000094 E3A02000 MOV R2,#0x0
00000098 E1A00001 MOV R0,R1 ; pStack
0000009C E2400004 SUB R0,R0,#0x0004 ; pStack
ARM COMPILER V2.32a, GGT_CPU_c 28/02/08 23:05:54 PAGE 11
000000A0 E1A01000 MOV R1,R0 ; pStack
000000A4 E5802000 STR R2,[R0,#0x0]
269: *--pStack = 0; /* r6 */
000000A8 E3A02000 MOV R2,#0x0
000000AC E1A00001 MOV R0,R1 ; pStack
000000B0 E2400004 SUB R0,R0,#0x0004 ; pStack
000000B4 E1A01000 MOV R1,R0 ; pStack
000000B8 E5802000 STR R2,[R0,#0x0]
270: *--pStack = 0; /* r5 */
000000BC E3A02000 MOV R2,#0x0
000000C0 E1A00001 MOV R0,R1 ; pStack
000000C4 E2400004 SUB R0,R0,#0x0004 ; pStack
000000C8 E1A01000 MOV R1,R0 ; pStack
000000CC E5802000 STR R2,[R0,#0x0]
271: *--pStack = 0; /* r4 */
000000D0 E3A02000 MOV R2,#0x0
000000D4 E1A00001 MOV R0,R1 ; pStack
000000D8 E2400004 SUB R0,R0,#0x0004 ; pStack
000000DC E1A01000 MOV R1,R0 ; pStack
000000E0 E5802000 STR R2,[R0,#0x0]
272: *--pStack = 0; /* r3 */
000000E4 E3A02000 MOV R2,#0x0
000000E8 E1A00001 MOV R0,R1 ; pStack
000000EC E2400004 SUB R0,R0,#0x0004 ; pStack
000000F0 E1A01000 MOV R1,R0 ; pStack
000000F4 E5802000 STR R2,[R0,#0x0]
273: *--pStack = 0; /* r2 */
000000F8 E3A02000 MOV R2,#0x0
000000FC E1A00001 MOV R0,R1 ; pStack
00000100 E2400004 SUB R0,R0,#0x0004 ; pStack
00000104 E1A01000 MOV R1,R0 ; pStack
00000108 E5802000 STR R2,[R0,#0x0]
274: *--pStack = 0; /* r1 */
0000010C E3A02000 MOV R2,#0x0
00000110 E1A00001 MOV R0,R1 ; pStack
00000114 E2400004 SUB R0,R0,#0x0004 ; pStack
00000118 E1A01000 MOV R1,R0 ; pStack
0000011C E5802000 STR R2,[R0,#0x0]
275: *--pStack = TaskParam; /* r0 */
00000120 E1A02003 MOV R2,R3 ; TaskParam
00000124 E1A00001 MOV R0,R1 ; pStack
00000128 E2400004 SUB R0,R0,#0x0004 ; pStack
0000012C E1A01000 MOV R1,R0 ; pStack
00000130 E5802000 STR R2,[R0,#0x0]
276: *--pStack = Mode;
00000134 E1A02004 MOV R2,R4 ; Mode
00000138 E1A00001 MOV R0,R1 ; pStack
0000013C E2400004 SUB R0,R0,#0x0004 ; pStack
00000140 E1A01000 MOV R1,R0 ; pStack
00000144 E5802000 STR R2,[R0,#0x0]
277: return(pStack);
00000148 E1A00001 MOV R0,R1 ; pStack
278: }
0000014C E8BD0030 LDMIA R13!,{R4-R5}
00000150 E12FFF1E BX R14
00000154 ENDP ; 'OSStackInit?A'
*** CODE SEGMENT '?PR?main?GGT_CPU_c':
337: OSInit();
00000000 EBFFFFFE BL OSInit?A ; Targ=0x0
340: pOSTskMain->pTskStack -= 10; // 指向空栈
00000004 E5100000 LDR R0,=pOSTskMain ; pOSTskMain
00000008 E5901000 LDR R1,[R0,#0x0] ; pOSTskMain
0000000C E5910004 LDR R0,[R1,#0x4]
00000010 E2400028 SUB R0,R0,#0x0028
00000014 E5810004 STR R0,[R1,#0x4]
343: LDR R4,=pOSTskMain // mian任务变量地址
ARM COMPILER V2.32a, GGT_CPU_c 28/02/08 23:05:54 PAGE 12
00000018 E51F4000 LDR R4,=pOSTskMain
344: LDR R4,[R4, #0] // main任务数据区地址
0000001C E5944000 LDR R4,[R4,#0x0]
345: LDR R4,[R4, #4] // R4=堆栈指针
00000020 E5944004 LDR R4,[R4,#0x4]
346: STR SP, [R4] // 把SP指向main任务堆栈区,
00000024 E584D000 STR R13,[R4]
352: OSClockInit();
00000028 EBFFFFF4 BL OSClockInit?A ; Targ=0x0
355: OSTaskCreate(TaskUasrMain, 0, 255);
0000002C E5100000 LDR R0,=TaskUasrMain?A ; TaskUasrMain?A
00000030 E3A01000 MOV R1,#0x0
00000034 E3A020FF MOV R2,#0xFF
00000038 EBFFFFF0 BL OSTaskCreate?A ; Targ=0x0
358: pOSTskMain->PrioTick = 1000 * 90000;
0000003C E5100000 LDR R0,=0x55D4A80
00000040 E5101000 LDR R1,=pOSTskMain ; pOSTskMain
00000044 E5911000 LDR R1,[R1,#0x0] ; pOSTskMain
00000048 E5810010 STR R0,[R1,#0x10]
359: while(1)
0000004C L_8:
362: pOSTskMain->StateValue = 1000 * 90000;
0000004C E5100000 LDR R0,=0x55D4A80
00000050 E5101000 LDR R1,=pOSTskMain ; pOSTskMain
00000054 E5911000 LDR R1,[R1,#0x0] ; pOSTskMain
00000058 E5810018 STR R0,[R1,#0x18]
364: (PCON = PCON | 0x01);
0000005C E5100000 LDR R0,=0xE01FC0C0
00000060 E5D00000 LDRB R0,[R0,#0x0]
00000064 E1A01000 MOV R1,R0
00000068 E3811001 ORR R1,R1,#0x0001
0000006C E5100000 LDR R0,=0xE01FC0C0
00000070 E5C01000 STRB R1,[R0,#0x0]
365: }
00000074 EAFFFFF4 B L_8 ; Targ=0x4C
366: }
00000078 ENDP ; 'main'
*** CODE SEGMENT '?PR?OSTaskCreate?A?GGT_CPU_c':
383: UINT32 OSTaskCreate(void *pTaskBody, const UINT32 Prio, const UINT32 TaskParam)
00000000 E92D4000 STMDB R13!,{LR}
00000004 ---- Variable 'TaskParam' assigned to Register 'R2' ----
00000004 E1A03001 MOV R3,R1 ; Prio
00000008 ---- Variable 'Prio' assigned to Register 'R3' ----
00000008 E1A01000 MOV R1,R0 ; pTaskBody
0000000C ---- Variable 'pTaskBody' assigned to Register 'R1' ----
385: return(OSTaskUserCreate(pTaskBody, Prio, USR32MODE, TaskParam));
0000000C E1A00001 MOV R0,R1 ; pTaskBody
00000010 E1A01003 MOV R1,R3 ; Prio
00000014 E1A03002 MOV R3,R2 ; TaskParam
00000018 E3A02010 MOV R2,#0x10
0000001C EBFFFFF7 BL OSTaskUserCreate?A ; Targ=0x0
386: }
00000020 E8BD0008 LDMIA R13!,{R3}
00000024 E12FFF13 BX R3
00000028 ENDP ; 'OSTaskCreate?A'
*** CODE SEGMENT '?PR?OSIsrBegin?A?GGT_CPU_c':
406: OSIrqCount++;
00000000 E5100000 LDR R0,=OSIrqCount ; OSIrqCount
00000004 E5901000 LDR R1,[R0,#0x0] ; OSIrqCount
00000008 E2811001 ADD R1,R1,#0x0001
0000000C E5801000 STR R1,[R0,#0x0] ; OSIrqCount
408: }
00000010 E12FFF1E BX R14
00000014 ENDP ; 'OSIsrBegin?A'
*** CODE SEGMENT '?PR?OSIsrEnd?A?GGT_CPU_c':
427: void OSIsrEnd(BOOL DoSW)
ARM COMPILER V2.32a, GGT_CPU_c 28/02/08 23:05:54 PAGE 13
00000000 E92D4000 STMDB R13!,{LR}
00000004 E1A01000 MOV R1,R0 ; DoSW
00000008 ---- Variable 'DoSW' assigned to Register 'R1' ----
430: if(OSIrqCount)
00000008 E5100000 LDR R0,=OSIrqCount ; OSIrqCount
0000000C E5902000 LDR R2,[R0,#0x0] ; OSIrqCount
00000010 E3520000 CMP R2,#0x0000
00000014 0A000002 BEQ L_11 ; Targ=0x24
431: OSIrqCount++;
00000018 E5100000 LDR R0,=OSIrqCount ; OSIrqCount
0000001C E2822001 ADD R2,R2,#0x0001
00000020 E5802000 STR R2,[R0,#0x0] ; OSIrqCount
00000024 L_11:
435: if(DoSW)
00000024 E1A00001 MOV R0,R1 ; DoSW
00000028 E3500000 CMP R0,#0x0000 ; DoSW
0000002C 0A000002 BEQ L_12 ; Targ=0x3C
437: OSTaskIsNULLLoadDef();
00000030 EBFFFFF2 BL OSTaskIsNULLLoadDef?A ; Targ=0x0
438: OSTaskSW();
00000034 E3A00000 MOV R0,#0x0
00000038 EF000000 SWI 0x0 ; SWI_Handler?A
439: }
0000003C L_12:
440: }
0000003C E8BD0008 LDMIA R13!,{R3}
00000040 E12FFF13 BX R3
00000044 ENDP ; 'OSIsrEnd?A'
Module Information Static
----------------------------------
code size = ------
data size = 4
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -