📄 ggt_sem.lst
字号:
ARM COMPILER V2.32a, GGT_Sem 28/02/08 23:05:55 PAGE 1
ARM COMPILER V2.32a, COMPILATION OF MODULE GGT_Sem
OBJECT MODULE PLACED IN .\Output\GGT_Sem.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\Kernel\GGT_Sem.c ARM BROWSE DEBUG PRINT(.\LIST\GGT_SEM.
-LST) TABS(4) OBJECT(.\Output\GGT_Sem.obj)
stmt level source
1 /****************************************************************************************************
2 ** Gogoto OS
3 ** (c) Copyright 2007-2008, luyigui(卢益贵)
4 ** All Rights Reserved
5 ** V1.00.0
6 **
7 ** 狗狗兔嵌入式多任务系统(基于消息机制)
8 ** 绿城代码、GGT-OS、Gogoto OS、狗狗兔嵌入式、狗狗兔系统
9 ** QQ:48092788
10 **
11 **------------------文件信息------------------------------------------------------------------------
12 ** 文件名: GGT_Mem.c
13 ** 创建人: 卢益贵
14 ** 日 期: 2008年1月5日
15 ** 版 本: V1.00.0
16 ** 描 述: Gogoto OS 旗帜功能单元
17 **
18
19 **------------------修改记录------------------------------------------------------------------------
20 ** 修改人:
21 ** 版 本:
22 ** 日 期:
23 ** 描 述:
24 **
25
26 ****************************************************************************************************/
27
28 #include "GGT_OS.h"
29 #include "GGT_CPU.h"
30 #include "GGT_Func.h"
31 #include "GGT_SysType.h"
32 #include "GGT_Kernel.h"
33
34 /****************************************************************************************************
35 ** 函数名: OSSemInit
36 ** 描 述: 旗帜初始化
37 ** 输 入: pSem:旗帜指针
38 ** 输 出: 无
39 ** 创建人: 卢益贵
40 ** 日 期: 2008年1月5日
41
42 **------------------修改记录------------------------------------------------------------------------
43 ** 修改人:
44 ** 日 期:
45 ** 说 明:
46 ** 原代码:
47 **--------------------------------------------------------------------------------------------------
48 ****************************************************************************************************/
49 void OSSemInit(_pSem pSem)
50 {
51 1 OSIRQLock();
52 1
53 1 pSem->Flag = 0;
54 1 pSem->pTask = NULL;
55 1
56 1 OSIRQUnlock();
57 1 }
58
ARM COMPILER V2.32a, GGT_Sem 28/02/08 23:05:55 PAGE 2
59 /****************************************************************************************************
60 ** 函数名: OSSemSend
61 ** 描 述: 旗帜发送函数
62 ** 输 入: pSem:互斥变量指针
63 ** 输 出: 无
64 ** 创建人: 卢益贵
65 ** 日 期: 2008年1月5日
66
67 **------------------修改记录------------------------------------------------------------------------
68 ** 修改人:
69 ** 日 期:
70 ** 说 明:
71 ** 原代码:
72 **--------------------------------------------------------------------------------------------------
73 ****************************************************************************************************/
74 void OSSemSend(_pSem pSem)
75 {
76 1 _pOSTask pTask;
77 1
78 1 OSIRQLock();
79 1
80 1 if(NULL == pSem->pTask)
81 1 {
82 2 while(pSem->pTask)
83 2 {
84 3 pTask = pSem->pTask;
85 3 pSem->pTask = ((_pOSTask)(pSem->pTask))->pNext;
86 3 OSTaskPushReady(pTask);
87 3 }
88 2 }else
89 1 pSem->Flag = 1;
90 1
91 1 OSIRQUnlock();
92 1 }
93
94 /****************************************************************************************************
95 ** 函数名: OSSemWait
96 ** 描 述: 旗帜等待函数
97 ** 输 入: pSem:旗帜指针
98 ** 输 出: 无
99 ** 创建人: 卢益贵
100 ** 日 期: 2008年1月5日
101
102 **------------------修改记录------------------------------------------------------------------------
103 ** 修改人:
104 ** 日 期:
105 ** 说 明:
106 ** 原代码:
107 **--------------------------------------------------------------------------------------------------
108 ****************************************************************************************************/
109 void OSSemWait(_pSem pSem)
110 {
111 1 OSIRQLock();
112 1
113 1 if(!pSem->Flag)
114 1 {
115 2 pOSTskNow->State = OS_STATE_TSK_WAIT_SEM;
116 2 ListInsert(&(pSem->pTask), pOSTskNow, OSTaskOrderByPrio);
117 2 OSTaskIsNULLLoadDef();
118 2 OSTaskSW();
119 2 }else
120 1 pSem->Flag = 0;
121 1
122 1 OSIRQUnlock();
123 1 }
124
ARM COMPILER V2.32a, GGT_Sem 28/02/08 23:05:55 PAGE 3
125
ARM COMPILER V2.32a, GGT_Sem 28/02/08 23:05:55 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE32 (SWI_Handler?A)
EXTERN CODE32 (ListInsert?A)
EXTERN DATA (pOSTskNow)
EXTERN CODE32 (OSTaskPushReady?A)
EXTERN CODE32 (OSTaskIsNULLLoadDef?A)
EXTERN CODE32 (OSTaskOrderByPrio?A)
*** PUBLICS:
PUBLIC OSSemWait?A
PUBLIC OSSemSend?A
PUBLIC OSSemInit?A
*** CODE SEGMENT '?PR?OSSemInit?A?GGT_Sem':
49: void OSSemInit(_pSem pSem)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; pSem
00000008 ---- Variable 'pSem' assigned to Register 'R4' ----
51: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
53: pSem->Flag = 0;
00000010 E3A01000 MOV R1,#0x0
00000014 E1A00004 MOV R0,R4 ; pSem
00000018 E5801000 STR R1,[R0,#0x0] ; pSem
54: pSem->pTask = NULL;
0000001C E3A01000 MOV R1,#0x0
00000020 E1A00004 MOV R0,R4 ; pSem
00000024 E5801004 STR R1,[R0,#0x4]
56: OSIRQUnlock();
00000028 E3A00003 MOV R0,#0x3
0000002C EF000000 SWI 0x0 ; SWI_Handler?A
57: }
00000030 E8BD0010 LDMIA R13!,{R4}
00000034 E8BD0008 LDMIA R13!,{R3}
00000038 E12FFF13 BX R3
0000003C ENDP ; 'OSSemInit?A'
*** CODE SEGMENT '?PR?OSSemSend?A?GGT_Sem':
74: void OSSemSend(_pSem pSem)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; pSem
00000008 ---- Variable 'pSem' assigned to Register 'R4' ----
75: {
00000008 ; SCOPE-START
78: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
80: if(NULL == pSem->pTask)
00000010 E1A00004 MOV R0,R4 ; pSem
00000014 E5900004 LDR R0,[R0,#0x4]
00000018 E3500000 CMP R0,#0x0000
0000001C 1A00000D BNE L_1 ; Targ=0x58
82: while(pSem->pTask)
00000020 EA000007 B L_2 ; Targ=0x44
00000024 L_4:
84: pTask = pSem->pTask;
00000024 E1A00004 MOV R0,R4 ; pSem
00000028 E5900004 LDR R0,[R0,#0x4]
0000002C E1A01000 MOV R1,R0 ; pTask
00000030 ---- Variable 'pTask' assigned to Register 'R1' ----
85: pSem->pTask = ((_pOSTask)(pSem->pTask))->pNext;
00000030 E5902000 LDR R2,[R0,#0x0]
00000034 E1A00004 MOV R0,R4 ; pSem
ARM COMPILER V2.32a, GGT_Sem 28/02/08 23:05:55 PAGE 5
00000038 E5802004 STR R2,[R0,#0x4]
86: OSTaskPushReady(pTask);
0000003C E1A00001 MOV R0,R1 ; pTask
00000040 EBFFFFEE BL OSTaskPushReady?A ; Targ=0x0
87: }
00000044 L_2:
00000044 E1A00004 MOV R0,R4 ; pSem
00000048 E5900004 LDR R0,[R0,#0x4]
0000004C E3500000 CMP R0,#0x0000
00000050 1AFFFFF3 BNE L_4 ; Targ=0x24
88: }else
00000054 EA000002 B L_6 ; Targ=0x64
00000058 L_1:
89: pSem->Flag = 1;
00000058 E3A01001 MOV R1,#0x1
0000005C E1A00004 MOV R0,R4 ; pSem
00000060 E5801000 STR R1,[R0,#0x0] ; pSem
00000064 L_6:
91: OSIRQUnlock();
00000064 E3A00003 MOV R0,#0x3
00000068 EF000000 SWI 0x0 ; SWI_Handler?A
0000006C ; SCOPE-END
92: }
0000006C E8BD0010 LDMIA R13!,{R4}
00000070 E8BD0008 LDMIA R13!,{R3}
00000074 E12FFF13 BX R3
00000078 ENDP ; 'OSSemSend?A'
*** CODE SEGMENT '?PR?OSSemWait?A?GGT_Sem':
109: void OSSemWait(_pSem pSem)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; pSem
00000008 ---- Variable 'pSem' assigned to Register 'R4' ----
111: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
113: if(!pSem->Flag)
00000010 E1A00004 MOV R0,R4 ; pSem
00000014 E5900000 LDR R0,[R0,#0x0] ; pSem
00000018 E3500000 CMP R0,#0x0000
0000001C 1A00000D BNE L_7 ; Targ=0x58
115: pOSTskNow->State = OS_STATE_TSK_WAIT_SEM;
00000020 E3A00010 MOV R0,#0x10
00000024 E5101000 LDR R1,=pOSTskNow ; pOSTskNow
00000028 E5911000 LDR R1,[R1,#0x0] ; pOSTskNow
0000002C E5810014 STR R0,[R1,#0x14]
116: ListInsert(&(pSem->pTask), pOSTskNow, OSTaskOrderByPrio);
00000030 E1A00004 MOV R0,R4 ; pSem
00000034 E2800004 ADD R0,R0,#0x0004 ; pSem
00000038 E5101000 LDR R1,=pOSTskNow ; pOSTskNow
0000003C E5911000 LDR R1,[R1,#0x0] ; pOSTskNow
00000040 E5102000 LDR R2,=OSTaskOrderByPrio?A ; OSTaskOrderByPrio?A
00000044 EBFFFFED BL ListInsert?A ; Targ=0x0
117: OSTaskIsNULLLoadDef();
00000048 EBFFFFEC BL OSTaskIsNULLLoadDef?A ; Targ=0x0
118: OSTaskSW();
0000004C E3A00000 MOV R0,#0x0
00000050 EF000000 SWI 0x0 ; SWI_Handler?A
119: }else
00000054 EA000002 B L_8 ; Targ=0x64
00000058 L_7:
120: pSem->Flag = 0;
00000058 E3A01000 MOV R1,#0x0
0000005C E1A00004 MOV R0,R4 ; pSem
00000060 E5801000 STR R1,[R0,#0x0] ; pSem
00000064 L_8:
122: OSIRQUnlock();
ARM COMPILER V2.32a, GGT_Sem 28/02/08 23:05:55 PAGE 6
00000064 E3A00003 MOV R0,#0x3
00000068 EF000000 SWI 0x0 ; SWI_Handler?A
123: }
0000006C E8BD0010 LDMIA R13!,{R4}
00000070 E8BD0008 LDMIA R13!,{R3}
00000074 E12FFF13 BX R3
00000078 ENDP ; 'OSSemWait?A'
Module Information Static
----------------------------------
code size = ------
data size = ------
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 + -