📄 ggt_mut.lst
字号:
00000014 E1A00004 MOV R0,R4 ; pMut
00000018 E5801000 STR R1,[R0,#0x0] ; pMut
55: pMut->pTask = NULL;
0000001C E3A01000 MOV R1,#0x0
00000020 E1A00004 MOV R0,R4 ; pMut
00000024 E580100C STR R1,[R0,#0xC]
56: pMut->Count = 0;
00000028 E3A01000 MOV R1,#0x0
0000002C E1A00004 MOV R0,R4 ; pMut
00000030 E5801008 STR R1,[R0,#0x8]
57: pMut->Owner = 0;
00000034 E3A01000 MOV R1,#0x0
00000038 E1A00004 MOV R0,R4 ; pMut
0000003C E5801004 STR R1,[R0,#0x4]
59: OSIRQUnlock();
00000040 E3A00003 MOV R0,#0x3
00000044 EF000000 SWI 0x0 ; SWI_Handler?A
60: }
00000048 E8BD0010 LDMIA R13!,{R4}
0000004C E8BD0008 LDMIA R13!,{R3}
00000050 E12FFF13 BX R3
00000054 ENDP ; 'OSMutInit?A'
*** CODE SEGMENT '?PR?OSMutRelease?A?GGT_Mut':
77: void OSMutRelease(_pMut pMut)
00000000 E92D4030 STMDB R13!,{R4-R5,LR}
00000004 E1A05000 MOV R5,R0 ; pMut
00000008 ---- Variable 'pMut' assigned to Register 'R5' ----
00000008 ---- Variable 'pTask' assigned to Register 'R4' ----
78: {
00000008 ; SCOPE-START
81: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
83: pMut->Count--;
00000010 E1A00005 MOV R0,R5 ; pMut
00000014 E2800008 ADD R0,R0,#0x0008 ; pMut
00000018 E5901000 LDR R1,[R0,#0x0]
0000001C E2411001 SUB R1,R1,#0x0001
00000020 E5801000 STR R1,[R0,#0x0]
85: if(0 >= pMut->Count)
ARM COMPILER V2.32a, GGT_Mut 28/02/08 23:05:55 PAGE 5
00000024 E1A00005 MOV R0,R5 ; pMut
00000028 E5900008 LDR R0,[R0,#0x8]
0000002C E3500000 CMP R0,#0x0000
00000030 CA00001B BGT L_1 ; Targ=0xA4
87: if(pMut->pTask)
00000034 E1A00005 MOV R0,R5 ; pMut
00000038 E590000C LDR R0,[R0,#0xC]
0000003C E3500000 CMP R0,#0x0000
00000040 0A000014 BEQ L_2 ; Targ=0x98
89: pMut->IsBusy = TRUE;
00000044 E3A01001 MOV R1,#0x1
00000048 E1A00005 MOV R0,R5 ; pMut
0000004C E5801000 STR R1,[R0,#0x0] ; pMut
90: pMut->Owner = pTask->ID;
00000050 E1A00004 MOV R0,R4 ; pTask
00000054 E590100C LDR R1,[R0,#0xC]
00000058 E1A00005 MOV R0,R5 ; pMut
0000005C E5801004 STR R1,[R0,#0x4]
91: pMut->Count = 0;
00000060 E3A01000 MOV R1,#0x0
00000064 E1A00005 MOV R0,R5 ; pMut
00000068 E5801008 STR R1,[R0,#0x8]
92: pTask = pMut->pTask;
0000006C E1A00005 MOV R0,R5 ; pMut
00000070 E590000C LDR R0,[R0,#0xC]
00000074 E1A04000 MOV R4,R0 ; pTask
93: ((_pOSTask)(pMut->pTask)) = ((_pOSTask)(pMut->pTask))->pNext;
00000078 E5901000 LDR R1,[R0,#0x0]
0000007C E1A00005 MOV R0,R5 ; pMut
00000080 E580100C STR R1,[R0,#0xC]
94: OSTaskPushReady(pTask);
00000084 E1A00004 MOV R0,R4 ; pTask
00000088 EBFFFFDC BL OSTaskPushReady?A ; Targ=0x0
95: OSTaskSW();
0000008C E3A00000 MOV R0,#0x0
00000090 EF000000 SWI 0x0 ; SWI_Handler?A
96: }else
00000094 EA000002 B L_1 ; Targ=0xA4
00000098 L_2:
97: pMut->IsBusy = FALSE;
00000098 E3A01000 MOV R1,#0x0
0000009C E1A00005 MOV R0,R5 ; pMut
000000A0 E5801000 STR R1,[R0,#0x0] ; pMut
98: }
000000A4 L_1:
100: OSIRQUnlock();
000000A4 E3A00003 MOV R0,#0x3
000000A8 EF000000 SWI 0x0 ; SWI_Handler?A
000000AC ; SCOPE-END
101: }
000000AC E8BD0030 LDMIA R13!,{R4-R5}
000000B0 E8BD0008 LDMIA R13!,{R3}
000000B4 E12FFF13 BX R3
000000B8 ENDP ; 'OSMutRelease?A'
*** CODE SEGMENT '?PR?OSMutWait?A?GGT_Mut':
118: void OSMutWait(_pMut pMut)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; pMut
00000008 ---- Variable 'pMut' assigned to Register 'R4' ----
120: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
122: if(pMut->IsBusy)
00000010 E1A00004 MOV R0,R4 ; pMut
00000014 E5900000 LDR R0,[R0,#0x0] ; pMut
00000018 E3500000 CMP R0,#0x0000
ARM COMPILER V2.32a, GGT_Mut 28/02/08 23:05:55 PAGE 6
0000001C 0A000018 BEQ L_4 ; Targ=0x84
124: if(pMut->Owner != pOSTskNow->ID)
00000020 E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000024 E5901000 LDR R1,[R0,#0x0] ; pOSTskNow
00000028 E591200C LDR R2,[R1,#0xC]
0000002C E1A00004 MOV R0,R4 ; pMut
00000030 E5900004 LDR R0,[R0,#0x4]
00000034 E1500002 CMP R0,R2
00000038 0A00000B BEQ L_5 ; Targ=0x6C
126: pOSTskNow->State = OS_STATE_TSK_WAIT_MUT;
0000003C E3A00008 MOV R0,#0x8
00000040 E5810014 STR R0,[R1,#0x14]
128: ListInsert(&(pMut->pTask), pOSTskNow, OSTaskOrderByPrio);
00000044 E1A00004 MOV R0,R4 ; pMut
00000048 E280000C ADD R0,R0,#0x000C ; pMut
0000004C E5101000 LDR R1,=pOSTskNow ; pOSTskNow
00000050 E5911000 LDR R1,[R1,#0x0] ; pOSTskNow
00000054 E5102000 LDR R2,=OSTaskOrderByPrio?A ; OSTaskOrderByPrio?A
00000058 EBFFFFE8 BL ListInsert?A ; Targ=0x0
129: OSTaskIsNULLLoadDef();
0000005C EBFFFFE7 BL OSTaskIsNULLLoadDef?A ; Targ=0x0
130: OSTaskSW();
00000060 E3A00000 MOV R0,#0x0
00000064 EF000000 SWI 0x0 ; SWI_Handler?A
131: }else
00000068 EA000010 B L_7 ; Targ=0xB0
0000006C L_5:
132: pMut->Count++;
0000006C E1A00004 MOV R0,R4 ; pMut
00000070 E2800008 ADD R0,R0,#0x0008 ; pMut
00000074 E5901000 LDR R1,[R0,#0x0]
00000078 E2811001 ADD R1,R1,#0x0001
0000007C E5801000 STR R1,[R0,#0x0]
133: }else
00000080 EA00000A B L_7 ; Targ=0xB0
00000084 L_4:
135: pMut->Count = 0;
00000084 E3A01000 MOV R1,#0x0
00000088 E1A00004 MOV R0,R4 ; pMut
0000008C E5801008 STR R1,[R0,#0x8]
136: pMut->Owner = pOSTskNow->ID;
00000090 E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000094 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
00000098 E590100C LDR R1,[R0,#0xC]
0000009C E1A00004 MOV R0,R4 ; pMut
000000A0 E5801004 STR R1,[R0,#0x4]
137: pMut->IsBusy = TRUE;
000000A4 E3A01001 MOV R1,#0x1
000000A8 E1A00004 MOV R0,R4 ; pMut
000000AC E5801000 STR R1,[R0,#0x0] ; pMut
138: }
000000B0 L_7:
140: OSIRQUnlock();
000000B0 E3A00003 MOV R0,#0x3
000000B4 EF000000 SWI 0x0 ; SWI_Handler?A
141: }
000000B8 E8BD0010 LDMIA R13!,{R4}
000000BC E8BD0008 LDMIA R13!,{R3}
000000C0 E12FFF13 BX R3
000000C4 ENDP ; 'OSMutWait?A'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
ARM COMPILER V2.32a, GGT_Mut 28/02/08 23:05:55 PAGE 7
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -