📄 ggt_kernel.lst
字号:
00000008 E1A00002 MOV R0,R2 ; pTask
0000000C E5801000 STR R1,[R0,#0x0] ; pTask
117: pTask->pTskStack = NULL;
00000010 E3A01000 MOV R1,#0x0
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 14
00000014 E1A00002 MOV R0,R2 ; pTask
00000018 E5801004 STR R1,[R0,#0x4]
118: pTask->pStack = NULL;
0000001C E3A01000 MOV R1,#0x0
00000020 E1A00002 MOV R0,R2 ; pTask
00000024 E5801008 STR R1,[R0,#0x8]
119: pTask->PrioTick = 0;
00000028 E3A01000 MOV R1,#0x0
0000002C E1A00002 MOV R0,R2 ; pTask
00000030 E5801010 STR R1,[R0,#0x10]
120: pTask->State = OS_STATE_TSK_NULL;
00000034 E3A01000 MOV R1,#0x0
00000038 E1A00002 MOV R0,R2 ; pTask
0000003C E5801014 STR R1,[R0,#0x14]
121: pTask->StateValue = 0;
00000040 E3A01000 MOV R1,#0x0
00000044 E1A00002 MOV R0,R2 ; pTask
00000048 E5801018 STR R1,[R0,#0x18]
122: pTask->pMsg = NULL;
0000004C E3A01000 MOV R1,#0x0
00000050 E1A00002 MOV R0,R2 ; pTask
00000054 E580101C STR R1,[R0,#0x1C]
123: }
00000058 E12FFF1E BX R14
0000005C ENDP ; 'OSTaskDataInit?A'
*** CODE SEGMENT '?PR?OSTaskUserCreate?A?GGT_Kernel':
143: UINT32 OSTaskUserCreate(void *pTaskBody, const UINT32 Prio, const UINT32 Mode, const UINT32 TaskParam)
00000000 E92D40F0 STMDB R13!,{R4-R7,LR}
00000004 E1A04003 MOV R4,R3 ; TaskParam
00000008 ---- Variable 'TaskParam' assigned to Register 'R4' ----
00000008 E1A05002 MOV R5,R2 ; Mode
0000000C ---- Variable 'Mode' assigned to Register 'R5' ----
0000000C E1A07001 MOV R7,R1 ; Prio
00000010 ---- Variable 'Prio' assigned to Register 'R7' ----
00000010 E1A06000 MOV R6,R0 ; pTaskBody
00000014 ---- Variable 'pTaskBody' assigned to Register 'R6' ----
00000014 E24DD004 SUB R13,R13,#0x0004
144: {
00000018 ; SCOPE-START
148: OSIRQLock();
00000018 E3A00002 MOV R0,#0x2
0000001C EF000000 SWI 0x0 ; SWI_Handler?A
151: pTask = BoxAlloc(OSGetBoxTask());
00000020 EBFFFFF6 BL OSGetBoxTask?A ; Targ=0x0
00000024 EBFFFFF5 BL BoxAlloc?A ; Targ=0x0
00000028 E58D0000 STR R0,[R13,#0x0] ; pTask
152: OSTaskDataInit(pTask);
0000002C E59D0000 LDR R0,[R13,#0x0] ; pTask
00000030 EBFFFFF2 BL OSTaskDataInit?A ; Targ=0x0
153: pTask->PrioTick = OSTaskGetPrioTick(Prio);
00000034 E1A00007 MOV R0,R7 ; Prio
00000038 EBFFFFF0 BL OSTaskGetPrioTick?A ; Targ=0x0
0000003C E59D1000 LDR R1,[R13,#0x0] ; pTask
00000040 E5810010 STR R0,[R1,#0x10]
155: pTask->pStack = OSStackAlloc();
00000044 EBFFFFED BL OSStackAlloc?A ; Targ=0x0
00000048 E59D1000 LDR R1,[R13,#0x0] ; pTask
0000004C E5810008 STR R0,[R1,#0x8]
157: pTask->pTskStack = OSStackInit(pTaskBody, pTask->pStack, Mode, TaskParam);
00000050 E59D0000 LDR R0,[R13,#0x0] ; pTask
00000054 E5901008 LDR R1,[R0,#0x8]
00000058 E1A00006 MOV R0,R6 ; pTaskBody
0000005C E1A02005 MOV R2,R5 ; Mode
00000060 E1A03004 MOV R3,R4 ; TaskParam
00000064 EBFFFFE5 BL OSStackInit?A ; Targ=0x0
00000068 E59D1000 LDR R1,[R13,#0x0] ; pTask
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 15
0000006C E5810004 STR R0,[R1,#0x4]
162: ListAppend((void *)(&pOSTskReady), (void *)pTask);
00000070 E5100000 LDR R0,=pOSTskReady ; pOSTskReady
00000074 E59D1000 LDR R1,[R13,#0x0] ; pTask
00000078 EBFFFFE0 BL ListAppend?A ; Targ=0x0
165: OSIRQUnlock();
0000007C E3A00003 MOV R0,#0x3
00000080 EF000000 SWI 0x0 ; SWI_Handler?A
167: return(pTask->ID);
00000084 E59D0000 LDR R0,[R13,#0x0] ; pTask
00000088 E590000C LDR R0,[R0,#0xC]
0000008C ; SCOPE-END
168: }
0000008C E28DD004 ADD R13,R13,#0x0004
00000090 E8BD00F0 LDMIA R13!,{R4-R7}
00000094 E8BD0008 LDMIA R13!,{R3}
00000098 E12FFF13 BX R3
0000009C ENDP ; 'OSTaskUserCreate?A'
*** CODE SEGMENT '?PR?OSTaskSelf?A?GGT_Kernel':
187: return(pOSTskNow->ID);
00000000 E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000004 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
00000008 E590000C LDR R0,[R0,#0xC]
188: }
0000000C E12FFF1E BX R14
00000010 ENDP ; 'OSTaskSelf?A'
*** CODE SEGMENT '?PR?OSTaskKill?A?GGT_Kernel':
205: void OSTaskKill(OS_ID TaskID)
00000000 E92D4030 STMDB R13!,{R4-R5,LR}
00000004 E1A04000 MOV R4,R0 ; TaskID
00000008 ---- Variable 'TaskID' assigned to Register 'R4' ----
206: {
00000008 ; SCOPE-START
209: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
211: pTask = &(pOSTask[TaskID - 1]);
00000010 E1A00004 MOV R0,R4 ; TaskID
00000014 E2400001 SUB R0,R0,#0x0001 ; TaskID
00000018 E1A00280 MOV R0,R0,LSL #5
0000001C E5101000 LDR R1,=pOSTask ; pOSTask
00000020 E5915000 LDR R5,[R1,#0x0] ; pOSTask
00000024 E0855000 ADD R5,R5,R0
00000028 ---- Variable 'pTask' assigned to Register 'R5' ----
213: ListDelete((void *)(&pOSTskReady), (void *)pTask);
00000028 E5100000 LDR R0,=pOSTskReady ; pOSTskReady
0000002C E1A01005 MOV R1,R5 ; pTask
00000030 EBFFFFF2 BL ListDelete?A ; Targ=0x0
214: ListDelete((void *)(&pOSTskDelay), (void *)pTask);
00000034 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
00000038 E1A01005 MOV R1,R5 ; pTask
0000003C EBFFFFEF BL ListDelete?A ; Targ=0x0
217: BoxFree(OSGetBoxStack(), pTask->pStack);
00000040 EBFFFFEE BL OSGetBoxStack?A ; Targ=0x0
00000044 E1A01005 MOV R1,R5 ; pTask
00000048 E5911008 LDR R1,[R1,#0x8]
0000004C EBFFFFEB BL BoxFree?A ; Targ=0x0
218: BoxFree(OSGetBoxTask(), pTask);
00000050 EBFFFFEA BL OSGetBoxTask?A ; Targ=0x0
00000054 E1A01005 MOV R1,R5 ; pTask
00000058 EBFFFFE8 BL BoxFree?A ; Targ=0x0
221: if(pOSTskNow->ID == TaskID)
0000005C E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000060 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
00000064 E590100C LDR R1,[R0,#0xC]
00000068 E1A00004 MOV R0,R4 ; TaskID
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 16
0000006C E1510000 CMP R1,R0 ; TaskID
00000070 1A000002 BNE L_11 ; Targ=0x80
224: OSTaskIsNULLLoadDef();
00000074 EBFFFFE1 BL OSTaskIsNULLLoadDef?A ; Targ=0x0
226: OSTaskSW();
00000078 E3A00000 MOV R0,#0x0
0000007C EF000000 SWI 0x0 ; SWI_Handler?A
227: }
00000080 L_11:
229: OSIRQUnlock();
00000080 E3A00003 MOV R0,#0x3
00000084 EF000000 SWI 0x0 ; SWI_Handler?A
00000088 ; SCOPE-END
230: }
00000088 E8BD0030 LDMIA R13!,{R4-R5}
0000008C E8BD0008 LDMIA R13!,{R3}
00000090 E12FFF13 BX R3
00000094 ENDP ; 'OSTaskKill?A'
*** CODE SEGMENT '?PR?OSTaskSetPrio?A?GGT_Kernel':
248: void OSTaskSetPrio(OS_ID TaskID, UINT32 Prio)
00000000 E92D4030 STMDB R13!,{R4-R5,LR}
00000004 E1A05001 MOV R5,R1 ; Prio
00000008 ---- Variable 'Prio' assigned to Register 'R5' ----
00000008 E1A04000 MOV R4,R0 ; TaskID
0000000C ---- Variable 'TaskID' assigned to Register 'R4' ----
250: if(0 == Prio)
0000000C E1A00005 MOV R0,R5 ; Prio
00000010 E3500000 CMP R0,#0x0000 ; Prio
00000014 1A000000 BNE L_12 ; Targ=0x1C
251: Prio = 1;
00000018 E3A05001 MOV R5,#0x1
0000001C L_12:
252: if(255 < Prio)
0000001C E1A00005 MOV R0,R5 ; Prio
00000020 E35000FF CMP R0,#0x00FF ; Prio
00000024 9A000000 BLS L_13 ; Targ=0x2C
253: Prio = 255;
00000028 E3A050FF MOV R5,#0xFF
0000002C L_13:
254: OSIRQLock();
0000002C E3A00002 MOV R0,#0x2
00000030 EF000000 SWI 0x0 ; SWI_Handler?A
255: pOSTask[TaskID -1].PrioTick = 256 - Prio;
00000034 E1A00005 MOV R0,R5 ; Prio
00000038 E3A01C01 MOV R1,#0x100
0000003C E0411000 SUB R1,R1,R0 ; Prio
00000040 E1A02004 MOV R2,R4 ; TaskID
00000044 E2422001 SUB R2,R2,#0x0001 ; TaskID
00000048 E1A02282 MOV R2,R2,LSL #5
0000004C E5100000 LDR R0,=pOSTask ; pOSTask
00000050 E5900000 LDR R0,[R0,#0x0] ; pOSTask
00000054 E0800002 ADD R0,R0,R2
00000058 E5801010 STR R1,[R0,#0x10]
256: OSIRQUnlock();
0000005C E3A00003 MOV R0,#0x3
00000060 EF000000 SWI 0x0 ; SWI_Handler?A
257: }
00000064 E8BD0030 LDMIA R13!,{R4-R5}
00000068 E8BD0008 LDMIA R13!,{R3}
0000006C E12FFF13 BX R3
00000070 ENDP ; 'OSTaskSetPrio?A'
*** CODE SEGMENT '?PR?Resume?A?GGT_Kernel':
274: BOOL Resume(OS_ID TaskID)
00000000 E92D4070 STMDB R13!,{R4-R6,LR}
00000004 E1A05000 MOV R5,R0 ; TaskID
00000008 ---- Variable 'TaskID' assigned to Register 'R5' ----
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 17
275: {
00000008 ; SCOPE-START
279: R = FALSE;
00000008 E3A04000 MOV R4,#0x0
0000000C ---- Variable 'R' assigned to Register 'R4' ----
280: OSIRQLock();
0000000C E3A00002 MOV R0,#0x2
00000010 EF000000 SWI 0x0 ; SWI_Handler?A
282: pTask = &(pOSTask[TaskID - 1]);
00000014 E1A00005 MOV R0,R5 ; TaskID
00000018 E2400001 SUB R0,R0,#0x0001 ; TaskID
0000001C E1A00280 MOV R0,R0,LSL #5
00000020 E5101000 LDR R1,=pOSTask ; pOSTask
00000024 E5915000 LDR R5,[R1,#0x0] ; pOSTask
00000028 E0855000 ADD R5,R5,R0
0000002C ---- Variable 'pTask' assigned to Register 'R5' ----
283: if(OS_STATE_TSK_SUSPEND & pTask->State)
0000002C E1A00005 MOV R0,R5 ; pTask
00000030 E5900014 LDR R0,[R0,#0x14]
00000034 E3100101 TST R0,#0x40000000
00000038 0A000010 BEQ L_14 ; Targ=0x80
285: pTask->State &= (~OS_STATE_TSK_SUSPEND);
0000003C E3C00101 BIC R0,R0,#0x40000000
00000040 E1A01005 MOV R1,R5 ; pTask
00000044 E5810014 STR R0,[R1,#0x14]
287: if(pTask->State & OS_STATE_TSK_DELAY)
00000048 E1A00005 MOV R0,R5 ; pTask
0000004C E5906014 LDR R6,[R0,#0x14]
00000050 E3160002 TST R6,#0x0002
00000054 0A000003 BEQ L_15 ; Targ=0x68
288: ListAppend((void *)(&pOSTskDelay), (void *)pTask);
00000058 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
0000005C E1A01005 MOV R1,R5 ; pTask
00000060 EBFFFFE6 BL ListAppend?A ; Targ=0x0
00000064 EA000004 B L_16 ; Targ=0x7C
00000068 L_15:
291: if(pTask->State & OS_STATE_TSK_READY)
00000068 E3160001 TST R6,#0x0001
0000006C 0A000002 BEQ L_16 ; Targ=0x7C
292: ListAppend((void *)(&pOSTskReady), (void *)pTask);
00000070 E5100000 LDR R0,=pOSTskReady ; pOSTskReady
00000074 E1A01005 MOV R1,R5 ; pTask
00000078 EBFFFFE0 BL ListAppend?A ; Targ=0x0
0000007C L_16:
293: R = TRUE;
0000007C E3A04001 MOV R4,#0x1
294: }
00000080 L_14:
295: OSIRQUnlock();
00000080 E3A00003 MOV R0,#0x3
00000084 EF000000 SWI 0x0 ; SWI_Handler?A
297: return(R);
00000088 E1A00004 MOV R0,R4 ; R
0000008C ; SCOPE-END
298: }
0000008C E8BD0070 LDMIA R13!,{R4-R6}
00000090 E8BD0008 LDMIA R13!,{R3}
00000094 E12FFF13 BX R3
00000098 ENDP ; 'Resume?A'
*** CODE SEGMENT '?PR?Suspend?A?GGT_Kernel':
315: void Suspend(OS_ID TaskID)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -