os_mutex.txt

来自「针对STM32F103的UCOS移植」· 文本 代码 · 共 1,096 行 · 第 1/5 页

TXT
1,096
字号
0002c8  d004              BEQ      |L1.724|
0002ca  f8848000          STRB     r8,[r4,#0]            ;422
0002ce  b005              ADD      sp,sp,#0x14
0002d0  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.724|
0002d4  484c              LDR      r0,|L1.1032|
0002d6  7800              LDRB     r0,[r0,#0]            ;425  ; OSIntNesting
0002d8  b120              CBZ      r0,|L1.740|
0002da  2002              MOVS     r0,#2                 ;426
0002dc  7020              STRB     r0,[r4,#0]            ;426
0002de  b005              ADD      sp,sp,#0x14
0002e0  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.740|
0002e4  484e              LDR      r0,|L1.1056|
0002e6  7800              LDRB     r0,[r0,#0]            ;429  ; OSLockNesting
0002e8  b120              CBZ      r0,|L1.756|
0002ea  200d              MOVS     r0,#0xd               ;430
0002ec  7020              STRB     r0,[r4,#0]            ;430
0002ee  b005              ADD      sp,sp,#0x14
0002f0  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.756|
0002f4  f7fffffe          BL       OS_CPU_SR_Save
0002f8  9001              STR      r0,[sp,#4]            ;433
0002fa  8928              LDRH     r0,[r5,#8]            ;434
0002fc  0a01              LSRS     r1,r0,#8              ;434
0002fe  43c2              MVNS     r2,r0                 ;436
000300  4e42              LDR      r6,|L1.1036|
000302  f0120fff          TST      r2,#0xff              ;436
000306  f04f0700          MOV      r7,#0                 ;436
00030a  d11b              BNE      |L1.836|
00030c  f400427f          AND      r2,r0,#0xff00         ;437
000310  812a              STRH     r2,[r5,#8]            ;437
000312  6830              LDR      r0,[r6,#0]            ;438  ; OSTCBCur
000314  f890302e          LDRB     r3,[r0,#0x2e]         ;438
000318  431a              ORRS     r2,r2,r3              ;438
00031a  812a              STRH     r2,[r5,#8]            ;438
00031c  6068              STR      r0,[r5,#4]            ;439
00031e  f890002e          LDRB     r0,[r0,#0x2e]         ;440
000322  4288              CMP      r0,r1                 ;440
000324  d807              BHI      |L1.822|
000326  9801              LDR      r0,[sp,#4]            ;441
000328  f7fffffe          BL       OS_CPU_SR_Restore
00032c  2078              MOVS     r0,#0x78              ;442
00032e  7020              STRB     r0,[r4,#0]            ;442
000330  b005              ADD      sp,sp,#0x14
000332  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.822|
000336  9801              LDR      r0,[sp,#4]            ;444
000338  f7fffffe          BL       OS_CPU_SR_Restore
00033c  7027              STRB     r7,[r4,#0]            ;445
00033e  b005              ADD      sp,sp,#0x14
000340  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.836|
000344  b2c2              UXTB     r2,r0                 ;449
000346  6868              LDR      r0,[r5,#4]            ;450
000348  f890302e          LDRB     r3,[r0,#0x2e]         ;451
00034c  428b              CMP      r3,r1                 ;451
00034e  d97f              BLS      |L1.1104|
000350  6833              LDR      r3,[r6,#0]            ;452  ; OSTCBCur
000352  f893302e          LDRB     r3,[r3,#0x2e]         ;452
000356  4293              CMP      r3,r2                 ;452
000358  d27a              BCS      |L1.1104|
00035a  f8903030          LDRB     r3,[r0,#0x30]         ;453
00035e  f8dfe0b8          LDR      lr,|L1.1048|
000362  f890c031          LDRB     r12,[r0,#0x31]        ;454
000366  f81e2003          LDRB     r2,[lr,r3]            ;454
00036a  f8df90b0          LDR      r9,|L1.1052|
00036e  ea120f0c          TST      r2,r12                ;454
000372  d010              BEQ      |L1.918|
000374  ea22020c          BIC      r2,r2,r12             ;455
000378  f80e2003          STRB     r2,[lr,r3]            ;455
00037c  f81e2003          LDRB     r2,[lr,r3]            ;456
000380  b93a              CBNZ     r2,|L1.914|
000382  f8902032          LDRB     r2,[r0,#0x32]         ;457
000386  f8993000          LDRB     r3,[r9,#0]            ;457  ; OSRdyGrp
00038a  ea230202          BIC      r2,r3,r2              ;457
00038e  f8892000          STRB     r2,[r9,#0]            ;457  ; OSRdyGrp
                  |L1.914|
000392  2201              MOVS     r2,#1                 ;459
000394  e011              B        |L1.954|
                  |L1.918|
000396  69c2              LDR      r2,[r0,#0x1c]         ;461
000398  b172              CBZ      r2,|L1.952|
00039a  f1020a0b          ADD      r10,r2,#0xb           ;463
00039e  f813b00a          LDRB     r11,[r3,r10]          ;463
0003a2  ea3b0c0c          BICS     r12,r11,r12           ;463
0003a6  f803c00a          STRB     r12,[r3,r10]          ;463
0003aa  d105              BNE      |L1.952|
0003ac  7a93              LDRB     r3,[r2,#0xa]          ;464
0003ae  f890c032          LDRB     r12,[r0,#0x32]        ;464
0003b2  ea23030c          BIC      r3,r3,r12             ;464
0003b6  7293              STRB     r3,[r2,#0xa]          ;464
                  |L1.952|
0003b8  2200              MOVS     r2,#0                 ;467
                  |L1.954|
0003ba  f880102e          STRB     r1,[r0,#0x2e]         ;469
0003be  f890302e          LDRB     r3,[r0,#0x2e]         ;471
0003c2  ea4f0cd3          LSR      r12,r3,#3             ;471
0003c6  f880c030          STRB     r12,[r0,#0x30]        ;471
0003ca  f0030a07          AND      r10,r3,#7             ;472
0003ce  f880a02f          STRB     r10,[r0,#0x2f]        ;472
0003d2  f890c030          LDRB     r12,[r0,#0x30]        ;473
0003d6  fa08f30c          LSL      r3,r8,r12             ;473
0003da  b2db              UXTB     r3,r3                 ;473
0003dc  f8803032          STRB     r3,[r0,#0x32]         ;473
0003e0  fa08f80a          LSL      r8,r8,r10             ;474
0003e4  f00808ff          AND      r8,r8,#0xff           ;474
0003e8  f8808031          STRB     r8,[r0,#0x31]         ;474
0003ec  2a01              CMP      r2,#1                 ;481
0003ee  d11a              BNE      |L1.1062|
0003f0  f8992000          LDRB     r2,[r9,#0]            ;482  ; OSRdyGrp
0003f4  431a              ORRS     r2,r2,r3              ;482
0003f6  f8892000          STRB     r2,[r9,#0]            ;482  ; OSRdyGrp
0003fa  f81e200c          LDRB     r2,[lr,r12]           ;483
0003fe  ea420208          ORR      r2,r2,r8              ;483
000402  f80e200c          STRB     r2,[lr,r12]           ;483
000406  e020              B        |L1.1098|
                  |L1.1032|
000408  00000000          DCD      OSIntNesting
                  |L1.1036|
00040c  00000000          DCD      OSTCBCur
                  |L1.1040|
000410  00000000          DCD      OSTCBPrioTbl
                  |L1.1044|
000414  00000000          DCD      OSEventFreeList
                  |L1.1048|
000418  00000000          DCD      OSRdyTbl
                  |L1.1052|
00041c  00000000          DCD      OSRdyGrp
                  |L1.1056|
000420  00000000          DCD      OSLockNesting
000424  e014              B        |L1.1104|
                  |L1.1062|
000426  69c2              LDR      r2,[r0,#0x1c]         ;485
000428  b17a              CBZ      r2,|L1.1098|
00042a  f892c00a          LDRB     r12,[r2,#0xa]         ;487
00042e  ea4c0303          ORR      r3,r12,r3             ;487
000432  7293              STRB     r3,[r2,#0xa]          ;487
000434  f8903030          LDRB     r3,[r0,#0x30]         ;488
000438  320b              ADDS     r2,r2,#0xb            ;488
00043a  f813c002          LDRB     r12,[r3,r2]           ;488
00043e  f890e031          LDRB     lr,[r0,#0x31]         ;488
000442  ea4c0c0e          ORR      r12,r12,lr            ;488
000446  f803c002          STRB     r12,[r3,r2]           ;488
                  |L1.1098|
00044a  4a63              LDR      r2,|L1.1496|
00044c  f8420021          STR      r0,[r2,r1,LSL #2]     ;491
                  |L1.1104|
000450  6830              LDR      r0,[r6,#0]            ;494  ; OSTCBCur
000452  f890102c          LDRB     r1,[r0,#0x2c]         ;494
000456  f0410110          ORR      r1,r1,#0x10           ;494
00045a  f880102c          STRB     r1,[r0,#0x2c]         ;494
00045e  f880702d          STRB     r7,[r0,#0x2d]         ;495
000462  9903              LDR      r1,[sp,#0xc]          ;496
000464  8541              STRH     r1,[r0,#0x2a]         ;496
000466  4628              MOV      r0,r5                 ;497
000468  f7fffffe          BL       OS_EventTaskWait
00046c  9801              LDR      r0,[sp,#4]            ;498
00046e  f7fffffe          BL       OS_CPU_SR_Restore
000472  f7fffffe          BL       OS_Sched
000476  f7fffffe          BL       OS_CPU_SR_Save
00047a  4680              MOV      r8,r0                 ;500
00047c  6831              LDR      r1,[r6,#0]            ;501  ; OSTCBCur
00047e  f891602d          LDRB     r6,[r1,#0x2d]         ;501
000482  b18e              CBZ      r6,|L1.1192|
000484  4628              MOV      r0,r5                 ;503
000486  f7fffffe          BL       OS_EventTOAbort
00048a  4640              MOV      r0,r8                 ;504
00048c  f7fffffe          BL       OS_CPU_SR_Restore
000490  2e02              CMP      r6,#2                 ;505
000492  d004              BEQ      |L1.1182|
000494  200a              MOVS     r0,#0xa               ;508
000496  7020              STRB     r0,[r4,#0]            ;508
000498  b005              ADD      sp,sp,#0x14
00049a  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.1182|
00049e  200e              MOVS     r0,#0xe               ;512
0004a0  7020              STRB     r0,[r4,#0]            ;512
0004a2  b005              ADD      sp,sp,#0x14
0004a4  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.1192|
0004a8  61cf              STR      r7,[r1,#0x1c]         ;517
0004aa  4640              MOV      r0,r8                 ;518
0004ac  f7fffffe          BL       OS_CPU_SR_Restore
0004b0  7027              STRB     r7,[r4,#0]            ;519
0004b2  b005              ADD      sp,sp,#0x14
0004b4  e8bd8ff0          POP      {r4-r11,pc}
;;;521    /*$PAGE*/
                          ENDP

                  OSMutexPost PROC
;;;546    INT8U  OSMutexPost (OS_EVENT *pevent)
;;;547    {
0004b8  e92d41f0          PUSH     {r4-r8,lr}
0004bc  4604              MOV      r4,r0
;;;548        INT8U      pip;                                   /* Priority inheritance priority                 */
;;;549        INT8U      prio;
;;;550    #if OS_CRITICAL_METHOD == 3                           /* Allocate storage for CPU status register      */
;;;551        OS_CPU_SR  cpu_sr = 0;
;;;552    #endif
;;;553    
;;;554    
;;;555    
;;;556        if (OSIntNesting > 0) {                           /* See if called from ISR ...                    */
0004be  4847              LDR      r0,|L1.1500|
0004c0  7800              LDRB     r0,[r0,#0]  ; OSIntNesting
0004c2  b110              CBZ      r0,|L1.1226|
;;;557            return (OS_ERR_POST_ISR);                     /* ... can't POST mutex from an ISR              */
0004c4  2005              MOVS     r0,#5
;;;558        }
;;;559    #if OS_ARG_CHK_EN > 0
;;;560        if (pevent == (OS_EVENT *)0) {                    /* Validate 'pevent'                             */
;;;561            return (OS_ERR_PEVENT_NULL);
;;;562        }
;;;563    #endif
;;;564        if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) { /* Validate event block type                     */
;;;565            return (OS_ERR_EVENT_TYPE);
;;;566        }
;;;567        OS_ENTER_CRITICAL();
;;;568        pip  = (INT8U)(pevent->OSEventCnt >> 8);          /* Get priority inheritance priority of mutex    */

⌨️ 快捷键说明

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