📄 os_flag.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_flag.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips uCosii\OS_FLAG.C]
ARM
AREA ||.text.7||, CODE, READONLY, ALIGN=2
OSFlagAccept PROC
;;;78 OS_FLAGS OSFlagAccept (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err)
;;;79 {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 e1a04000 MOV r4,r0
000008 e1a05001 MOV r5,r1
00000c e1a06002 MOV r6,r2
000010 e1a07003 MOV r7,r3
;;;80 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;81 OS_CPU_SR cpu_sr;
;;;82 #endif
;;;83 OS_FLAGS flags_cur;
;;;84 OS_FLAGS flags_rdy;
;;;85 BOOLEAN consume;
;;;86
;;;87
;;;88 #if OS_ARG_CHK_EN > 0
;;;89 if (pgrp == (OS_FLAG_GRP *)0) { /* Validate 'pgrp' */
000014 e3540000 CMP r4,#0
000018 1a000004 BNE |L1.48|
;;;90 *err = OS_FLAG_INVALID_PGRP;
00001c e3a00096 MOV r0,#0x96
000020 e5c70000 STRB r0,[r7,#0]
;;;91 return ((OS_FLAGS)0);
000024 e3a00000 MOV r0,#0
|L1.40|
000028 e8bd47f0 POP {r4-r10,lr}
;;;92 }
;;;93 if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) { /* Validate event block type */
;;;94 *err = OS_ERR_EVENT_TYPE;
;;;95 return ((OS_FLAGS)0);
;;;96 }
;;;97 #endif
;;;98 if (wait_type & OS_FLAG_CONSUME) { /* See if we need to consume the flags */
;;;99 wait_type &= ~OS_FLAG_CONSUME;
;;;100 consume = TRUE;
;;;101 } else {
;;;102 consume = FALSE;
;;;103 }
;;;104 /*$PAGE*/
;;;105 *err = OS_NO_ERR; /* Assume NO error until proven otherwise. */
;;;106 OS_ENTER_CRITICAL();
;;;107 switch (wait_type) {
;;;108 case OS_FLAG_WAIT_SET_ALL: /* See if all required flags are set */
;;;109 flags_rdy = pgrp->OSFlagFlags & flags; /* Extract only the bits we want */
;;;110 if (flags_rdy == flags) { /* Must match ALL the bits that we want */
;;;111 if (consume == TRUE) { /* See if we need to consume the flags */
;;;112 pgrp->OSFlagFlags &= ~flags_rdy; /* Clear ONLY the flags that we wanted */
;;;113 }
;;;114 } else {
;;;115 *err = OS_FLAG_ERR_NOT_RDY;
;;;116 }
;;;117 flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */
;;;118 OS_EXIT_CRITICAL();
;;;119 break;
;;;120
;;;121 case OS_FLAG_WAIT_SET_ANY:
;;;122 flags_rdy = pgrp->OSFlagFlags & flags; /* Extract only the bits we want */
;;;123 if (flags_rdy != (OS_FLAGS)0) { /* See if any flag set */
;;;124 if (consume == TRUE) { /* See if we need to consume the flags */
;;;125 pgrp->OSFlagFlags &= ~flags_rdy; /* Clear ONLY the flags that we got */
;;;126 }
;;;127 } else {
;;;128 *err = OS_FLAG_ERR_NOT_RDY;
;;;129 }
;;;130 flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */
;;;131 OS_EXIT_CRITICAL();
;;;132 break;
;;;133
;;;134 #if OS_FLAG_WAIT_CLR_EN > 0
;;;135 case OS_FLAG_WAIT_CLR_ALL: /* See if all required flags are cleared */
;;;136 flags_rdy = ~pgrp->OSFlagFlags & flags; /* Extract only the bits we want */
;;;137 if (flags_rdy == flags) { /* Must match ALL the bits that we want */
;;;138 if (consume == TRUE) { /* See if we need to consume the flags */
;;;139 pgrp->OSFlagFlags |= flags_rdy; /* Set ONLY the flags that we wanted */
;;;140 }
;;;141 } else {
;;;142 *err = OS_FLAG_ERR_NOT_RDY;
;;;143 }
;;;144 flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */
;;;145 OS_EXIT_CRITICAL();
;;;146 break;
;;;147
;;;148 case OS_FLAG_WAIT_CLR_ANY:
;;;149 flags_rdy = ~pgrp->OSFlagFlags & flags; /* Extract only the bits we want */
;;;150 if (flags_rdy != (OS_FLAGS)0) { /* See if any flag cleared */
;;;151 if (consume == TRUE) { /* See if we need to consume the flags */
;;;152 pgrp->OSFlagFlags |= flags_rdy; /* Set ONLY the flags that we got */
;;;153 }
;;;154 } else {
;;;155 *err = OS_FLAG_ERR_NOT_RDY;
;;;156 }
;;;157 flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */
;;;158 OS_EXIT_CRITICAL();
;;;159 break;
;;;160 #endif
;;;161
;;;162 default:
;;;163 OS_EXIT_CRITICAL();
;;;164 flags_cur = (OS_FLAGS)0;
;;;165 *err = OS_FLAG_ERR_WAIT_TYPE;
;;;166 break;
;;;167 }
;;;168 return (flags_cur);
;;;169 }
00002c e12fff1e BX lr
|L1.48|
000030 e5d40000 LDRB r0,[r4,#0] ;93
000034 e3500005 CMP r0,#5 ;93
000038 0a000003 BEQ |L1.76| ;93
00003c e3a00001 MOV r0,#1 ;94
000040 e5c70000 STRB r0,[r7,#0] ;94
000044 e3a00000 MOV r0,#0 ;95
000048 eafffff6 B |L1.40| ;95
|L1.76|
00004c e3160080 TST r6,#0x80 ;98
000050 0a000002 BEQ |L1.96| ;98
000054 e3c66080 BIC r6,r6,#0x80 ;99
000058 e3a0a001 MOV r10,#1 ;100
00005c ea000000 B |L1.100| ;100
|L1.96|
000060 e3a0a000 MOV r10,#0 ;102
|L1.100|
000064 e3a00000 MOV r0,#0 ;105
000068 e5c70000 STRB r0,[r7,#0] ;105
00006c ef000002 SVC 0x2 ; formerly SWI ;106
000070 e3560000 CMP r6,#0 ;107
000074 0a000026 BEQ |L1.276| ;107
000078 e3560001 CMP r6,#1 ;107
00007c 0a000036 BEQ |L1.348| ;107
000080 e3560002 CMP r6,#2 ;107
000084 0a000002 BEQ |L1.148| ;107
000088 e3560003 CMP r6,#3 ;107
00008c 1a000044 BNE |L1.420| ;107
000090 ea00000f B |L1.212| ;107
|L1.148|
000094 e1a00000 MOV r0,r0 ;108
000098 e1d400b8 LDRH r0,[r4,#8] ;109
00009c e0008005 AND r8,r0,r5 ;109
0000a0 e1580005 CMP r8,r5 ;110
0000a4 1a000005 BNE |L1.192| ;110
0000a8 e35a0001 CMP r10,#1 ;111
0000ac 1a000005 BNE |L1.200| ;111
0000b0 e1d400b8 LDRH r0,[r4,#8] ;112
0000b4 e1c00008 BIC r0,r0,r8 ;112
0000b8 e1c400b8 STRH r0,[r4,#8] ;112
0000bc ea000001 B |L1.200| ;112
|L1.192|
0000c0 e3a00098 MOV r0,#0x98 ;115
0000c4 e5c70000 STRB r0,[r7,#0] ;115
|L1.200|
0000c8 e1d490b8 LDRH r9,[r4,#8] ;117
0000cc ef000003 SVC 0x3 ; formerly SWI ;118
0000d0 ea000039 B |L1.444| ;119
|L1.212|
0000d4 e1a00000 MOV r0,r0 ;121
0000d8 e1d400b8 LDRH r0,[r4,#8] ;122
0000dc e0008005 AND r8,r0,r5 ;122
0000e0 e3580000 CMP r8,#0 ;123
0000e4 0a000005 BEQ |L1.256| ;123
0000e8 e35a0001 CMP r10,#1 ;124
0000ec 1a000005 BNE |L1.264| ;124
0000f0 e1d400b8 LDRH r0,[r4,#8] ;125
0000f4 e1c00008 BIC r0,r0,r8 ;125
0000f8 e1c400b8 STRH r0,[r4,#8] ;125
0000fc ea000001 B |L1.264| ;125
|L1.256|
000100 e3a00098 MOV r0,#0x98 ;128
000104 e5c70000 STRB r0,[r7,#0] ;128
|L1.264|
000108 e1d490b8 LDRH r9,[r4,#8] ;130
00010c ef000003 SVC 0x3 ; formerly SWI ;131
000110 ea000029 B |L1.444| ;132
|L1.276|
000114 e1a00000 MOV r0,r0 ;135
000118 e1d400b8 LDRH r0,[r4,#8] ;136
00011c e1c50000 BIC r0,r5,r0 ;136
000120 e1a08800 LSL r8,r0,#16 ;136
000124 e1a08828 LSR r8,r8,#16 ;136
000128 e1580005 CMP r8,r5 ;137
00012c 1a000005 BNE |L1.328| ;137
000130 e35a0001 CMP r10,#1 ;138
000134 1a000005 BNE |L1.336| ;138
000138 e1d400b8 LDRH r0,[r4,#8] ;139
00013c e1800008 ORR r0,r0,r8 ;139
000140 e1c400b8 STRH r0,[r4,#8] ;139
000144 ea000001 B |L1.336| ;139
|L1.328|
000148 e3a00098 MOV r0,#0x98 ;142
00014c e5c70000 STRB r0,[r7,#0] ;142
|L1.336|
000150 e1d490b8 LDRH r9,[r4,#8] ;144
000154 ef000003 SVC 0x3 ; formerly SWI ;145
000158 ea000017 B |L1.444| ;146
|L1.348|
00015c e1a00000 MOV r0,r0 ;148
000160 e1d400b8 LDRH r0,[r4,#8] ;149
000164 e1c50000 BIC r0,r5,r0 ;149
000168 e1a08800 LSL r8,r0,#16 ;149
00016c e1a08828 LSR r8,r8,#16 ;149
000170 e3580000 CMP r8,#0 ;150
000174 0a000005 BEQ |L1.400| ;150
000178 e35a0001 CMP r10,#1 ;151
00017c 1a000005 BNE |L1.408| ;151
000180 e1d400b8 LDRH r0,[r4,#8] ;152
000184 e1800008 ORR r0,r0,r8 ;152
000188 e1c400b8 STRH r0,[r4,#8] ;152
00018c ea000001 B |L1.408| ;152
|L1.400|
000190 e3a00098 MOV r0,#0x98 ;155
000194 e5c70000 STRB r0,[r7,#0] ;155
|L1.408|
000198 e1d490b8 LDRH r9,[r4,#8] ;157
00019c ef000003 SVC 0x3 ; formerly SWI ;158
0001a0 ea000005 B |L1.444| ;159
|L1.420|
0001a4 e1a00000 MOV r0,r0 ;162
0001a8 ef000003 SVC 0x3 ; formerly SWI ;163
0001ac e3a09000 MOV r9,#0 ;164
0001b0 e3a00097 MOV r0,#0x97 ;165
0001b4 e5c70000 STRB r0,[r7,#0] ;165
0001b8 e1a00000 MOV r0,r0 ;166
|L1.444|
0001bc e1a00000 MOV r0,r0 ;119
0001c0 e1a00009 MOV r0,r9 ;168
0001c4 eaffff97 B |L1.40| ;168
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -