os_flag.txt

来自「uc/os在lpc2100系列的KEIL模板 uc/os在lpc2100系列的」· 文本 代码 · 共 1,195 行 · 第 1/5 页

TXT
1,195
字号
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\os_flag.o --depend=.\rvmdk\os_flag.d --device=DARMP --apcs=interwork -O1 -I. -I..\BSP -I..\..\..\..\uCOS-II\Ports\ARM\Generic\RealView -I..\..\..\..\uCOS-II\Source -I..\..\..\..\uC-CPU -I..\..\..\..\uC-CPU\ARM\RealView -I..\..\..\..\uC-LIB -I..\..\..\..\uC-TCPIP\IF -I..\..\..\..\uC-TCPIP\IF\Ether -I..\..\..\..\uC-TCPIP\NIC\ETHER\LPC2378 -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY\DP83848 -I..\..\..\..\uC-TCPIP\OS\uCOS-II -I..\..\..\..\uC-TCPIP\Source -I..\..\..\..\uC-LCD\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\TCPIP\Source -I..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -Ie:\Keil_ARM\ARM\INC\Philips -D__IN_CHIP --omf_browse=.\rvmdk\os_flag.crf ..\Source\OS_FLAG.C]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  OSFlagAccept PROC
;;;78     OS_FLAGS  OSFlagAccept (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err)
;;;79     {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  e1a04000          MOV      r4,r0
000008  e1a06001          MOV      r6,r1
00000c  e1a08002          MOV      r8,r2
000010  e1a05003          MOV      r5,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  e5c50000          STRB     r0,[r5,#0]
;;;91             return ((OS_FLAGS)0);
000024  e3a00000          MOV      r0,#0
                  |L1.40|
000028  e8bd41f0          POP      {r4-r8,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|
00003c  e3a00001          MOV      r0,#1                 ;94
000040  e5c50000          STRB     r0,[r5,#0]            ;94
000044  e3a00000          MOV      r0,#0                 ;95
000048  eafffff6          B        |L1.40|
                  |L1.76|
00004c  e3180080          TST      r8,#0x80              ;98
000050  0a000002          BEQ      |L1.96|
000054  e3c88080          BIC      r8,r8,#0x80           ;99
000058  e3a07001          MOV      r7,#1                 ;100
00005c  ea000000          B        |L1.100|
                  |L1.96|
000060  e3a07000          MOV      r7,#0                 ;102
                  |L1.100|
000064  e3a00000          MOV      r0,#0                 ;105
000068  e5c50000          STRB     r0,[r5,#0]            ;105
00006c  ef000002          SVC      #0x2                  ;106
000070  e3580000          CMP      r8,#0                 ;107
000074  e3a02098          MOV      r2,#0x98              ;106
000078  0a00001f          BEQ      |L1.252|
00007c  e3580001          CMP      r8,#1                 ;107
000080  0a00002a          BEQ      |L1.304|
000084  e3580002          CMP      r8,#2                 ;107
000088  0a00000a          BEQ      |L1.184|
00008c  e3580003          CMP      r8,#3                 ;107
000090  1a000033          BNE      |L1.356|
000094  e1d410b8          LDRH     r1,[r4,#8]            ;122
000098  e0010006          AND      r0,r1,r6              ;122
00009c  e3500000          CMP      r0,#0                 ;123
0000a0  0a000011          BEQ      |L1.236|
0000a4  e3570001          CMP      r7,#1                 ;124
0000a8  1a000010          BNE      |L1.240|
0000ac  e1c10000          BIC      r0,r1,r0              ;125
0000b0  e1c400b8          STRH     r0,[r4,#8]            ;125
0000b4  ea00000d          B        |L1.240|
                  |L1.184|
0000b8  e1d410b8          LDRH     r1,[r4,#8]            ;109
0000bc  e0010006          AND      r0,r1,r6              ;109
0000c0  e1500006          CMP      r0,r6                 ;110
0000c4  1a000004          BNE      |L1.220|
0000c8  e3570001          CMP      r7,#1                 ;111
0000cc  1a000003          BNE      |L1.224|
0000d0  e1c10000          BIC      r0,r1,r0              ;112
0000d4  e1c400b8          STRH     r0,[r4,#8]            ;112
0000d8  ea000000          B        |L1.224|
                  |L1.220|
0000dc  e5c52000          STRB     r2,[r5,#0]            ;115
                  |L1.224|
0000e0  e1d440b8          LDRH     r4,[r4,#8]            ;117
0000e4  ef000003          SVC      #0x3                  ;118
0000e8  ea000021          B        |L1.372|
                  |L1.236|
0000ec  e5c52000          STRB     r2,[r5,#0]            ;128
                  |L1.240|
0000f0  e1d440b8          LDRH     r4,[r4,#8]            ;130
0000f4  ef000003          SVC      #0x3                  ;131
0000f8  ea00001d          B        |L1.372|
                  |L1.252|
0000fc  e1d410b8          LDRH     r1,[r4,#8]            ;136
000100  e1c60001          BIC      r0,r6,r1              ;136
000104  e1500006          CMP      r0,r6                 ;137
000108  1a000004          BNE      |L1.288|
00010c  e3570001          CMP      r7,#1                 ;138
000110  1a000003          BNE      |L1.292|
000114  e1800001          ORR      r0,r0,r1              ;139
000118  e1c400b8          STRH     r0,[r4,#8]            ;139
00011c  ea000000          B        |L1.292|
                  |L1.288|
000120  e5c52000          STRB     r2,[r5,#0]            ;142
                  |L1.292|
000124  e1d440b8          LDRH     r4,[r4,#8]            ;144
000128  ef000003          SVC      #0x3                  ;145
00012c  ea000010          B        |L1.372|
                  |L1.304|
000130  e1d410b8          LDRH     r1,[r4,#8]            ;149
000134  e1c60001          BIC      r0,r6,r1              ;149
000138  e3500000          CMP      r0,#0                 ;150
00013c  0a000004          BEQ      |L1.340|
000140  e3570001          CMP      r7,#1                 ;151
000144  1a000003          BNE      |L1.344|
000148  e1800001          ORR      r0,r0,r1              ;152
00014c  e1c400b8          STRH     r0,[r4,#8]            ;152
000150  ea000000          B        |L1.344|
                  |L1.340|
000154  e5c52000          STRB     r2,[r5,#0]            ;155
                  |L1.344|
000158  e1d440b8          LDRH     r4,[r4,#8]            ;157
00015c  ef000003          SVC      #0x3                  ;158
000160  ea000003          B        |L1.372|
                  |L1.356|
000164  ef000003          SVC      #0x3                  ;163
000168  e3a04000          MOV      r4,#0                 ;164
00016c  e3a00097          MOV      r0,#0x97              ;165
000170  e5c50000          STRB     r0,[r5,#0]            ;165
                  |L1.372|
000174  e1a00004          MOV      r0,r4                 ;168
000178  eaffffaa          B        |L1.40|
;;;170    #endif
                          ENDP

                  OSFlagCreate PROC
;;;193    OS_FLAG_GRP  *OSFlagCreate (OS_FLAGS flags, INT8U *err)
;;;194    {
00017c  e92d4070          PUSH     {r4-r6,lr}
000180  e1a06000          MOV      r6,r0
000184  e1a05001          MOV      r5,r1
;;;195    #if OS_CRITICAL_METHOD == 3                         /* Allocate storage for CPU status register        */
;;;196        OS_CPU_SR    cpu_sr;
;;;197    #endif
;;;198        OS_FLAG_GRP *pgrp;
;;;199    
;;;200    
;;;201        if (OSIntNesting > 0) {                         /* See if called from ISR ...                      */
000188  e59f07f0          LDR      r0,|L1.2432|
00018c  e5d00000          LDRB     r0,[r0,#0]  ; OSIntNesting
000190  e3500000          CMP      r0,#0
000194  0a000004          BEQ      |L1.428|
;;;202            *err = OS_ERR_CREATE_ISR;                   /* ... can't CREATE from an ISR                    */
000198  e3a0008d          MOV      r0,#0x8d
00019c  e5c50000          STRB     r0,[r5,#0]
;;;203            return ((OS_FLAG_GRP *)0);
0001a0  e3a00000          MOV      r0,#0
                  |L1.420|
0001a4  e8bd4070          POP      {r4-r6,lr}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?