⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_mutex.lst

📁 IAR project for MSP430 and uC/OS. All configured to start filling with tasks.
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   03D4  5E4E1E00          MOV.B   30(R14),R14     
   \   03D8  1F420000          MOV     &OSTCBCur,R15   
   \   03DC  DF4E0000          MOV.B   OSMapTbl(R14),32(R15)   
   \   03E0  2000
    438                  OSRdyGrp                   |= OSTCBCur->OSTCBBitY;
   \   03E2  1E420000          MOV     &OSTCBCur,R14   
   \   03E6  D2DE2100          BIS.B   33(R14),&OSRdyGrp       
   \   03EA  0000
    439                  OSRdyTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;
   \   03EC  1E420000          MOV     &OSTCBCur,R14   
   \   03F0  5E4E1F00          MOV.B   31(R14),R14     
   \   03F4  1F420000          MOV     &OSTCBCur,R15   
   \   03F8  DEDF2000          BIS.B   32(R15),OSRdyTbl(R14)   
   \   03FC  0000
    440                  OSTCBPrioTbl[prio]          = (OS_TCB *)OSTCBCur;
   \   03FE  0C5C              ADD     R12,R12 
   \   0400  9C420000          MOV     &OSTCBCur,OSTCBPrioTbl(R12)     
   \   0404  0000
   \   0406            ?0128:
    441              }
    442              OSTCBPrioTbl[pip] = (OS_TCB *)1;                  /* Reserve table entry                           */
   \   0406  0D5D              ADD     R13,R13 
   \   0408  9D430000          MOV     #1,OSTCBPrioTbl(R13)    
    443              if (pevent->OSEventGrp != 0x00) {                 /* Any task waiting for the mutex?               */
   \   040C  CA930100          CMP.B   #0,1(R10)       
   \   0410  1724              JEQ     (?0132) 
    444                                                                /* Yes, Make HPT waiting for mutex ready         */
    445                  prio                = OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MUTEX);
   \   0412  70121000          PUSH.B  #16     
   \   0416  0E43              MOV     #0,R14  
   \   0418  0C4A              MOV     R10,R12 
   \   041A  B0120000          CALL    #OS_EventTaskRdy        
   \   041E  2153              ADD     #2,SP   
    446                  pevent->OSEventCnt &= OS_MUTEX_KEEP_UPPER_8;  /*      Save priority of mutex's new owner       */
   \   0420  BAF000FF          AND     #65280,2(R10)   
   \   0424  0200
    447                  pevent->OSEventCnt |= prio;
   \   0426  4D4C              MOV.B   R12,R13 
   \   0428  8ADD0200          BIS     R13,2(R10)      
    448                  pevent->OSEventPtr  = OSTCBPrioTbl[prio];     /*      Link to mutex owner's OS_TCB             */
   \   042C  7CF3              AND.B   #-1,R12 
   \   042E  0C5C              ADD     R12,R12 
   \   0430  9A4C0000          MOV     OSTCBPrioTbl(R12),4(R10)        
   \   0434  0400
    449                  OS_EXIT_CRITICAL();
   \   0436  32D2              EINT            
    450                  OS_Sched();                                   /*      Find highest priority task ready to run  */
   \   0438  B0120000          CALL    #OS_Sched       
    451                  return (OS_NO_ERR);
   \   043C  4C43              MOV.B   #0,R12  
    452              }
   \   043E  073C              JMP     (?0133) 
   \   0440            ?0132:
    453              pevent->OSEventCnt |= OS_MUTEX_AVAILABLE;         /* No,  Mutex is now available                   */
   \   0440  BAD0FF00          BIS     #255,2(R10)     
   \   0444  0200
    454              pevent->OSEventPtr  = (void *)0;
   \   0446  8A430400          MOV     #0,4(R10)       
    455              OS_EXIT_CRITICAL();
   \   044A  32D2              EINT            
    456              return (OS_NO_ERR);
   \   044C  4C43              MOV.B   #0,R12  
    457          }
   \   044E            ?0133:
   \   044E  3A41              POP     R10     
   \   0450  3041              RET             
   \   0452            OSMutexQuery:
    458          /*$PAGE*/
    459          /*
    460          *********************************************************************************************************
    461          *                                     QUERY A MUTUAL EXCLUSION SEMAPHORE
    462          *
    463          * Description: This function obtains information about a mutex
    464          *
    465          * Arguments  : pevent        is a pointer to the event control block associated with the desired mutex
    466          *
    467          *              pdata         is a pointer to a structure that will contain information about the mutex
    468          *
    469          * Returns    : OS_NO_ERR            The call was successful and the message was sent
    470          *              OS_ERR_QUERY_ISR     If you called this function from an ISR
    471          *              OS_ERR_PEVENT_NULL   'pevent' is a NULL pointer
    472          *              OS_ERR_EVENT_TYPE    If you are attempting to obtain data from a non mutex.
    473          *********************************************************************************************************
    474          */
    475          
    476          #if OS_MUTEX_QUERY_EN > 0
    477          INT8U  OSMutexQuery (OS_EVENT *pevent, OS_MUTEX_DATA *pdata)
    478          {
    479          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    480              OS_CPU_SR  cpu_sr;
    481          #endif    
    482              INT8U     *psrc;
    483              INT8U     *pdest;
    484          
    485          
    486              if (OSIntNesting > 0) {                                /* See if called from ISR ...               */
   \   0452  C2930000          CMP.B   #0,&OSIntNesting        
   \   0456  0324              JEQ     (?0135) 
    487                  return (OS_ERR_QUERY_ISR);                         /* ... can't QUERY mutex from an ISR        */
   \   0458  7C400600          MOV.B   #6,R12  
    488              }
   \   045C  3041              RET             
   \   045E            ?0135:
    489          #if OS_ARG_CHK_EN > 0
    490              if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                        */
   \   045E  0C93              CMP     #0,R12  
   \   0460  0220              JNE     (?0137) 
    491                  return (OS_ERR_PEVENT_NULL);
   \   0462  6C42              MOV.B   #4,R12  
    492              }
   \   0464  3041              RET             
   \   0466            ?0137:
    493              if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) {      /* Validate event block type                */
   \   0466  6D42              MOV.B   #4,R13  
   \   0468  6D9C              CMP.B   @R12,R13        
   \   046A  0224              JEQ     (?0139) 
    494                  return (OS_ERR_EVENT_TYPE);
   \   046C  5C43              MOV.B   #1,R12  
    495              }
   \   046E  3041              RET             
   \   0470            ?0139:
    496          #endif
    497              OS_ENTER_CRITICAL();
   \   0470  32C2              DINT            
    498              pdata->OSMutexPIP  = (INT8U)(pevent->OSEventCnt >> 8);
   \   0472  1D4C0200          MOV     2(R12),R13      
   \   0476  8D10              SWPB    R13     
   \   0478  7DF3              AND.B   #-1,R13 
   \   047A  CE4D0500          MOV.B   R13,5(R14)      
    499              pdata->OSOwnerPrio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);
   \   047E  1D4C0200          MOV     2(R12),R13      
   \   0482  7DF3              AND.B   #255,R13        
   \   0484  CE4D0400          MOV.B   R13,4(R14)      
    500              if (pdata->OSOwnerPrio == 0xFF) {
   \   0488  FE930400          CMP.B   #255,4(R14)     
   \   048C  0320              JNE     (?0141) 
    501                  pdata->OSValue = 1;
   \   048E  DE430300          MOV.B   #1,3(R14)       
    502              } else {
   \   0492  023C              JMP     (?0142) 
   \   0494            ?0141:
    503                  pdata->OSValue = 0;
   \   0494  CE430300          MOV.B   #0,3(R14)       
   \   0498            ?0142:
    504              }
    505              pdata->OSEventGrp  = pevent->OSEventGrp;               /* Copy wait list                           */
   \   0498  DE4C0100          MOV.B   1(R12),2(R14)   
   \   049C  0200
    506              psrc               = &pevent->OSEventTbl[0];
   \   049E  3C500600          ADD     #6,R12  
    507              pdest              = &pdata->OSEventTbl[0];
   \   04A2  0D4E              MOV     R14,R13 
    508          #if OS_EVENT_TBL_SIZE > 0
    509              *pdest++           = *psrc++;
   \   04A4  FD4C0000          MOV.B   @R12+,0(R13)    
   \   04A8  1D53              ADD     #1,R13  
    510          #endif
    511          
    512          #if OS_EVENT_TBL_SIZE > 1
    513              *pdest++           = *psrc++;
   \   04AA  FD4C0000          MOV.B   @R12+,0(R13)    
    514          #endif
    515          
    516          #if OS_EVENT_TBL_SIZE > 2
    517              *pdest++           = *psrc++;
    518          #endif
    519          
    520          #if OS_EVENT_TBL_SIZE > 3
    521              *pdest++           = *psrc++;
    522          #endif
    523          
    524          #if OS_EVENT_TBL_SIZE > 4
    525              *pdest++           = *psrc++;
    526          #endif
    527          
    528          #if OS_EVENT_TBL_SIZE > 5
    529              *pdest++           = *psrc++;
    530          #endif
    531          
    532          #if OS_EVENT_TBL_SIZE > 6
    533              *pdest++           = *psrc++;
    534          #endif
    535          
    536          #if OS_EVENT_TBL_SIZE > 7
    537              *pdest             = *psrc;
    538          #endif
    539              OS_EXIT_CRITICAL();
   \   04AE  32D2              EINT            
    540              return (OS_NO_ERR);
   \   04B0  4C43              MOV.B   #0,R12  
    541          }
   \   04B2  3041              RET             
    542          #endif                                                     /* OS_MUTEX_QUERY_EN                        */
    543          #endif                                                     /* OS_MUTEX_EN                              */
   \   04B4                    END


                                       S Y M B O L - T A B L E
                                       =======================


            #include file(s):

       [ 1]       j:\software\ucos-ii\ti-msp430\iar\source\debug\obj\os_mutex.r43


            Symbol                     Type     Class   Defline   Refline(s)
            ------                     ----     -----   -------   ----------

ADC12CTL0                              sfrw     ---      757:9  
ADC12CTL1                              sfrw     ---      759:9  
ADC12IE                                sfrw     ---      763:9  
ADC12IFG                               sfrw     ---      761:9  
ADC12IV                                sfrw     ---      765:9  
ADC12MCTL0                             sfrb     ---      813:9  
ADC12MCTL1                             sfrb     ---      815:9  
ADC12MCTL10                            sfrb     ---      833:9  
ADC12MCTL11                            sfrb     ---      835:9  
ADC12MCTL12                            sfrb     ---      837

⌨️ 快捷键说明

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