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 + -
显示快捷键?