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

📄 os_mutex.s79

📁 ARM仿真案例
💻 S79
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION   21/Jul/2006  16:23:27 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
// Time limited license: 22 days left                                        /
//                                                                           /
//    Cpu mode        =  interwork                                           /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  E:\Project\ucos-ii\leddisp\uCOS-II\os_mutex.c       /
//    Command line    =  E:\Project\ucos-ii\leddisp\uCOS-II\os_mutex.c -lCN  /
//                       E:\Project\ucos-ii\leddisp\Debug\List\ -lA          /
//                       E:\Project\ucos-ii\leddisp\Debug\List\ -o           /
//                       E:\Project\ucos-ii\leddisp\Debug\Obj\ -s9 --no_cse  /
//                       --no_unroll --no_inline --no_code_motion --no_tbaa  /
//                       --no_clustering --no_scheduling --debug --cpu_mode  /
//                       thumb --endian little --cpu ARM7TDMI-S              /
//                       --stack_align 4 --interwork -e --fpu None           /
//                       --dlib_config "e:\Program Files\IAR                 /
//                       Systems\Embedded Workbench 4.0                      /
//                       Evaluation\ARM\LIB\dl4tptinl8n.h" -I                /
//                       E:\Project\ucos-ii\leddisp\ -I                      /
//                       E:\Project\ucos-ii\leddisp\App\ -I                  /
//                       E:\Project\ucos-ii\leddisp\ARM\ -I                  /
//                       E:\Project\ucos-ii\leddisp\BSP\ -I                  /
//                       E:\Project\ucos-ii\leddisp\uCOS-II\ -I "e:\Program  /
//                       Files\IAR Systems\Embedded Workbench 4.0            /
//                       Evaluation\ARM\INC\"                                /
//    List file       =  E:\Project\ucos-ii\leddisp\Debug\List\os_mutex.s79  /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME os_mutex

        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__interwork"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

??DataTable0 EQU 0
??DataTable1 EQU 0
??DataTable11 EQU 0
??DataTable14 EQU 0
??DataTable15 EQU 0
??DataTable16 EQU 0
??DataTable17 EQU 0
??DataTable18 EQU 0
??DataTable19 EQU 0
??DataTable20 EQU 0
??DataTable21 EQU 0
??DataTable22 EQU 0
??DataTable23 EQU 0
??DataTable24 EQU 0
??DataTable25 EQU 0
??DataTable26 EQU 0
??DataTable27 EQU 0
??DataTable28 EQU 0
??DataTable29 EQU 0
??DataTable3 EQU 0
??DataTable30 EQU 0
??DataTable31 EQU 0
??DataTable32 EQU 0
??DataTable33 EQU 0
??DataTable34 EQU 0
??DataTable35 EQU 0
??DataTable36 EQU 0
??DataTable37 EQU 0
??DataTable38 EQU 0
??DataTable39 EQU 0
??DataTable4 EQU 0
??DataTable40 EQU 0
??DataTable41 EQU 0
??DataTable42 EQU 0
??DataTable43 EQU 0
??DataTable44 EQU 0
??DataTable45 EQU 0
??DataTable46 EQU 0
??DataTable47 EQU 0
??DataTable48 EQU 0
??DataTable5 EQU 0
??DataTable51 EQU 0
??DataTable52 EQU 0
??DataTable53 EQU 0
??DataTable54 EQU 0
??DataTable56 EQU 0
??DataTable57 EQU 0
??DataTable59 EQU 0
??DataTable60 EQU 0
??DataTable61 EQU 0
??DataTable62 EQU 0
??DataTable7 EQU 0
??DataTable8 EQU 0
??DataTable9 EQU 0
        MULTWEAK ??OSMutexAccept??rA
        MULTWEAK ??OSMutexCreate??rA
        MULTWEAK ??OSMutexDel??rA
        MULTWEAK ??OSMutexPend??rA
        MULTWEAK ??OSMutexPost??rA
        MULTWEAK ??OSMutexQuery??rA
        MULTWEAK ??OS_CPU_SR_Restore??rT
        MULTWEAK ??OS_CPU_SR_Save??rT
        MULTWEAK ??OS_EventTO??rT
        MULTWEAK ??OS_EventTaskRdy??rT
        MULTWEAK ??OS_EventTaskWait??rT
        MULTWEAK ??OS_EventWaitListInit??rT
        MULTWEAK ??OS_Sched??rT
        PUBLIC OSMutexAccept
        FUNCTION OSMutexAccept,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC OSMutexCreate
        FUNCTION OSMutexCreate,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC OSMutexDel
        FUNCTION OSMutexDel,0203H
        LOCFRAME CSTACK, 24, STACK
        PUBLIC OSMutexPend
        FUNCTION OSMutexPend,0203H
        LOCFRAME CSTACK, 28, STACK
        PUBLIC OSMutexPost
        FUNCTION OSMutexPost,0203H
        LOCFRAME CSTACK, 20, STACK
        PUBLIC OSMutexQuery
        FUNCTION OSMutexQuery,0203H
        LOCFRAME CSTACK, 12, STACK
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 2
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon1
        
OS_CPU_SR_Restore   SYMBOL "OS_CPU_SR_Restore"
OS_CPU_SR_Save      SYMBOL "OS_CPU_SR_Save"
OS_EventTO          SYMBOL "OS_EventTO"
OS_EventTaskRdy     SYMBOL "OS_EventTaskRdy"
OS_EventTaskWait    SYMBOL "OS_EventTaskWait"
OS_EventWaitListInit SYMBOL "OS_EventWaitListInit"
OS_Sched            SYMBOL "OS_Sched"
OSMutexAccept       SYMBOL "OSMutexAccept"
??OSMutexAccept??rA SYMBOL "??rA", OSMutexAccept
OSMutexCreate       SYMBOL "OSMutexCreate"
??OSMutexCreate??rA SYMBOL "??rA", OSMutexCreate
OSMutexDel          SYMBOL "OSMutexDel"
??OSMutexDel??rA    SYMBOL "??rA", OSMutexDel
OSMutexPend         SYMBOL "OSMutexPend"
??OSMutexPend??rA   SYMBOL "??rA", OSMutexPend
OSMutexPost         SYMBOL "OSMutexPost"
??OSMutexPost??rA   SYMBOL "??rA", OSMutexPost
OSMutexQuery        SYMBOL "OSMutexQuery"
??OSMutexQuery??rA  SYMBOL "??rA", OSMutexQuery
??OS_CPU_SR_Restore??rT SYMBOL "??rT", OS_CPU_SR_Restore
??OS_CPU_SR_Save??rT SYMBOL "??rT", OS_CPU_SR_Save
??OS_EventTO??rT    SYMBOL "??rT", OS_EventTO
??OS_EventTaskRdy??rT SYMBOL "??rT", OS_EventTaskRdy
??OS_EventTaskWait??rT SYMBOL "??rT", OS_EventTaskWait
??OS_EventWaitListInit??rT SYMBOL "??rT", OS_EventWaitListInit
??OS_Sched??rT      SYMBOL "??rT", OS_Sched

        EXTERN OSEventFreeList
        EXTERN OSIntNesting
        EXTERN OSMapTbl
        EXTERN OSRdyGrp
        EXTERN OSRdyTbl
        EXTERN OSTCBCur
        EXTERN OSTCBPrioTbl
        EXTERN OS_CPU_SR_Restore
        FUNCTION OS_CPU_SR_Restore,0202H
        EXTERN OS_CPU_SR_Save
        FUNCTION OS_CPU_SR_Save,0202H
        EXTERN OS_EventTO
        FUNCTION OS_EventTO,0202H
        EXTERN OS_EventTaskRdy
        FUNCTION OS_EventTaskRdy,0202H
        EXTERN OS_EventTaskWait
        FUNCTION OS_EventTaskWait,0202H
        EXTERN OS_EventWaitListInit
        FUNCTION OS_EventWaitListInit,0202H
        EXTERN OS_Sched
        FUNCTION OS_Sched,0202H


        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI NoFunction
        ARM
??OSMutexAccept??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock0
        REQUIRE OSMutexAccept
// E:\Project\ucos-ii\leddisp\uCOS-II\os_mutex.c
//    1 /*
//    2 *********************************************************************************************************
//    3 *                                                uC/OS-II
//    4 *                                          The Real-Time Kernel
//    5 *                                  MUTUAL EXCLUSION SEMAPHORE MANAGEMENT
//    6 *
//    7 *                          (c) Copyright 1992-2003, Jean J. Labrosse, Weston, FL
//    8 *                                           All Rights Reserved
//    9 *
//   10 * File : OS_MUTEX.C
//   11 * By   : Jean J. Labrosse
//   12 *********************************************************************************************************
//   13 */
//   14 
//   15 #ifndef  OS_MASTER_FILE
//   16 #include <ucos_ii.h>
//   17 #endif
//   18 
//   19 /*
//   20 *********************************************************************************************************
//   21 *                                            LOCAL CONSTANTS
//   22 *********************************************************************************************************
//   23 */
//   24 
//   25 #define  OS_MUTEX_KEEP_LOWER_8   0x00FF
//   26 #define  OS_MUTEX_KEEP_UPPER_8   0xFF00
//   27 
//   28 #define  OS_MUTEX_AVAILABLE      0x00FF
//   29 
//   30 
//   31 #if OS_MUTEX_EN > 0
//   32 /*
//   33 *********************************************************************************************************
//   34 *                                   ACCEPT MUTUAL EXCLUSION SEMAPHORE
//   35 *
//   36 * Description: This  function checks the mutual exclusion semaphore to see if a resource is available.
//   37 *              Unlike OSMutexPend(), OSMutexAccept() does not suspend the calling task if the resource is
//   38 *              not available or the event did not occur.
//   39 *
//   40 * Arguments  : pevent     is a pointer to the event control block
//   41 *
//   42 *              err        is a pointer to an error code which will be returned to your application:
//   43 *                            OS_NO_ERR          if the call was successful.
//   44 *                            OS_ERR_EVENT_TYPE  if 'pevent' is not a pointer to a mutex
//   45 *                            OS_ERR_PEVENT_NULL 'pevent' is a NULL pointer
//   46 *                            OS_ERR_PEND_ISR     if you called this function from an ISR
//   47 *
//   48 * Returns    : == 1       if the resource is available, the mutual exclusion semaphore is acquired
//   49 *              == 0       a) if the resource is not available
//   50 *                         b) you didn't pass a pointer to a mutual exclusion semaphore
//   51 *                         c) you called this function from an ISR
//   52 *
//   53 * Warning(s) : This function CANNOT be called from an ISR because mutual exclusion semaphores are
//   54 *              intended to be used by tasks only.
//   55 *********************************************************************************************************
//   56 */
//   57 
//   58 #if OS_MUTEX_ACCEPT_EN > 0

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function OSMutexAccept
        THUMB
//   59 INT8U  OSMutexAccept (OS_EVENT *pevent, INT8U *err)
//   60 {
OSMutexAccept:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        MOVS     R5,R0
        MOVS     R4,R1
//   61 #if OS_CRITICAL_METHOD == 3                            /* Allocate storage for CPU status register     */

⌨️ 快捷键说明

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