📄 os_mutex.txt
字号:
000648 e5d11030 LDRB r1,[r1,#0x30] ;430
00064c e1c00001 BIC r0,r0,r1 ;430
000650 e21000ff ANDS r0,r0,#0xff ;430
000654 e59f1240 LDR r1,|L1.2204| ;430
000658 e5911000 LDR r1,[r1,#0] ;430 ; OSTCBCur
00065c e5d1102f LDRB r1,[r1,#0x2f] ;430
000660 e59f2240 LDR r2,|L1.2216| ;430
000664 e7c20001 STRB r0,[r2,r1] ;430
000668 1a000007 BNE |L1.1676| ;430
00066c e59f0228 LDR r0,|L1.2204| ;431
000670 e5900000 LDR r0,[r0,#0] ;431 ; OSTCBCur
000674 e5d00031 LDRB r0,[r0,#0x31] ;431
000678 e59f122c LDR r1,|L1.2220| ;431
00067c e5d11000 LDRB r1,[r1,#0] ;431 ; OSRdyGrp
000680 e1c10000 BIC r0,r1,r0 ;431
000684 e59f1220 LDR r1,|L1.2220| ;431
000688 e5c10000 STRB r0,[r1,#0] ;431 ; OSRdyGrp
|L1.1676|
00068c e59f0208 LDR r0,|L1.2204| ;433
000690 e5900000 LDR r0,[r0,#0] ;433 ; OSTCBCur
000694 e5c0602d STRB r6,[r0,#0x2d] ;433
000698 e1a001c6 ASR r0,r6,#3 ;434
00069c e59f11f8 LDR r1,|L1.2204| ;434
0006a0 e5911000 LDR r1,[r1,#0] ;434 ; OSTCBCur
0006a4 e5c1002f STRB r0,[r1,#0x2f] ;434
0006a8 e59f01ec LDR r0,|L1.2204| ;435
0006ac e5900000 LDR r0,[r0,#0] ;435 ; OSTCBCur
0006b0 e5d0002f LDRB r0,[r0,#0x2f] ;435
0006b4 e59f11f4 LDR r1,|L1.2224| ;435
0006b8 e7d10000 LDRB r0,[r1,r0] ;435
0006bc e59f11d8 LDR r1,|L1.2204| ;435
0006c0 e5911000 LDR r1,[r1,#0] ;435 ; OSTCBCur
0006c4 e5c10031 STRB r0,[r1,#0x31] ;435
0006c8 e2060007 AND r0,r6,#7 ;436
0006cc e59f11c8 LDR r1,|L1.2204| ;436
0006d0 e5911000 LDR r1,[r1,#0] ;436 ; OSTCBCur
0006d4 e5c1002e STRB r0,[r1,#0x2e] ;436
0006d8 e59f01bc LDR r0,|L1.2204| ;437
0006dc e5900000 LDR r0,[r0,#0] ;437 ; OSTCBCur
0006e0 e5d0002e LDRB r0,[r0,#0x2e] ;437
0006e4 e59f11c4 LDR r1,|L1.2224| ;437
0006e8 e7d10000 LDRB r0,[r1,r0] ;437
0006ec e59f11a8 LDR r1,|L1.2204| ;437
0006f0 e5911000 LDR r1,[r1,#0] ;437 ; OSTCBCur
0006f4 e5c10030 STRB r0,[r1,#0x30] ;437
0006f8 e59f019c LDR r0,|L1.2204| ;438
0006fc e5900000 LDR r0,[r0,#0] ;438 ; OSTCBCur
000700 e5d00031 LDRB r0,[r0,#0x31] ;438
000704 e59f11a0 LDR r1,|L1.2220| ;438
000708 e5d11000 LDRB r1,[r1,#0] ;438 ; OSRdyGrp
00070c e1800001 ORR r0,r0,r1 ;438
000710 e59f1194 LDR r1,|L1.2220| ;438
000714 e5c10000 STRB r0,[r1,#0] ;438 ; OSRdyGrp
000718 e59f017c LDR r0,|L1.2204| ;439
00071c e5900000 LDR r0,[r0,#0] ;439 ; OSTCBCur
000720 e5d0002f LDRB r0,[r0,#0x2f] ;439
000724 e59f117c LDR r1,|L1.2216| ;439
000728 e7d10000 LDRB r0,[r1,r0] ;439
00072c e59f1168 LDR r1,|L1.2204| ;439
000730 e5911000 LDR r1,[r1,#0] ;439 ; OSTCBCur
000734 e5d11030 LDRB r1,[r1,#0x30] ;439
000738 e1800001 ORR r0,r0,r1 ;439
00073c e59f1158 LDR r1,|L1.2204| ;439
000740 e5911000 LDR r1,[r1,#0] ;439 ; OSTCBCur
000744 e5d1102f LDRB r1,[r1,#0x2f] ;439
000748 e59f2158 LDR r2,|L1.2216| ;439
00074c e7c20001 STRB r0,[r2,r1] ;439
000750 e59f0144 LDR r0,|L1.2204| ;440
000754 e5900000 LDR r0,[r0,#0] ;440 ; OSTCBCur
000758 e59f1140 LDR r1,|L1.2208| ;440
00075c e7810106 STR r0,[r1,r6,LSL #2] ;440
|L1.1888|
000760 e3a00001 MOV r0,#1 ;442
000764 e59f1134 LDR r1,|L1.2208| ;442
000768 e7810105 STR r0,[r1,r5,LSL #2] ;442
00076c e5d40001 LDRB r0,[r4,#1] ;443
000770 e3500000 CMP r0,#0 ;443
000774 0a000011 BEQ |L1.1984| ;443
000778 e3a02010 MOV r2,#0x10 ;445
00077c e3a01000 MOV r1,#0 ;445
000780 e1a00004 MOV r0,r4 ;445
000784 ebfffffe BL OS_EventTaskRdy ;445
000788 e1a06000 MOV r6,r0 ;445
00078c e1d400b2 LDRH r0,[r4,#2] ;446
000790 e2000cff AND r0,r0,#0xff00 ;446
000794 e1c400b2 STRH r0,[r4,#2] ;446
000798 e1d400b2 LDRH r0,[r4,#2] ;447
00079c e1800006 ORR r0,r0,r6 ;447
0007a0 e1c400b2 STRH r0,[r4,#2] ;447
0007a4 e59f00f4 LDR r0,|L1.2208| ;448
0007a8 e7900106 LDR r0,[r0,r6,LSL #2] ;448
0007ac e5840004 STR r0,[r4,#4] ;448
0007b0 ef000003 SVC 0x3 ; formerly SWI ;449
0007b4 ebfffffe BL OS_Sched ;450
0007b8 e3a00000 MOV r0,#0 ;451
0007bc eaffff78 B |L1.1444| ;451
|L1.1984|
0007c0 e1d400b2 LDRH r0,[r4,#2] ;453
0007c4 e38000ff ORR r0,r0,#0xff ;453
0007c8 e1c400b2 STRH r0,[r4,#2] ;453
0007cc e3a00000 MOV r0,#0 ;454
0007d0 e5840004 STR r0,[r4,#4] ;454
0007d4 ef000003 SVC 0x3 ; formerly SWI ;455
0007d8 e3a00000 MOV r0,#0 ;456
0007dc eaffff70 B |L1.1444| ;456
ENDP
OSMutexQuery PROC
;;;477 INT8U OSMutexQuery (OS_EVENT *pevent, OS_MUTEX_DATA *pdata)
;;;478 {
0007e0 e92d41f0 PUSH {r4-r8,lr}
0007e4 e1a06000 MOV r6,r0
0007e8 e1a04001 MOV r4,r1
;;;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 ... */
0007ec e59f00a4 LDR r0,|L1.2200|
0007f0 e5d00000 LDRB r0,[r0,#0] ; OSIntNesting
0007f4 e3500000 CMP r0,#0
0007f8 da000002 BLE |L1.2056|
;;;487 return (OS_ERR_QUERY_ISR); /* ... can't QUERY mutex from an ISR */
0007fc e3a00006 MOV r0,#6
|L1.2048|
000800 e8bd41f0 POP {r4-r8,lr}
;;;488 }
;;;489 #if OS_ARG_CHK_EN > 0
;;;490 if (pevent == (OS_EVENT *)0) { /* Validate 'pevent' */
;;;491 return (OS_ERR_PEVENT_NULL);
;;;492 }
;;;493 if (pevent->OSEventType != OS_EVENT_TYPE_MUTEX) { /* Validate event block type */
;;;494 return (OS_ERR_EVENT_TYPE);
;;;495 }
;;;496 #endif
;;;497 OS_ENTER_CRITICAL();
;;;498 pdata->OSMutexPIP = (INT8U)(pevent->OSEventCnt >> 8);
;;;499 pdata->OSOwnerPrio = (INT8U)(pevent->OSEventCnt & OS_MUTEX_KEEP_LOWER_8);
;;;500 if (pdata->OSOwnerPrio == 0xFF) {
;;;501 pdata->OSValue = 1;
;;;502 } else {
;;;503 pdata->OSValue = 0;
;;;504 }
;;;505 pdata->OSEventGrp = pevent->OSEventGrp; /* Copy wait list */
;;;506 psrc = &pevent->OSEventTbl[0];
;;;507 pdest = &pdata->OSEventTbl[0];
;;;508 #if OS_EVENT_TBL_SIZE > 0
;;;509 *pdest++ = *psrc++;
;;;510 #endif
;;;511
;;;512 #if OS_EVENT_TBL_SIZE > 1
;;;513 *pdest++ = *psrc++;
;;;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();
;;;540 return (OS_NO_ERR);
;;;541 }
000804 e12fff1e BX lr
|L1.2056|
000808 e3560000 CMP r6,#0 ;490
00080c 1a000001 BNE |L1.2072| ;490
000810 e3a00004 MOV r0,#4 ;491
000814 eafffff9 B |L1.2048| ;491
|L1.2072|
000818 e5d60000 LDRB r0,[r6,#0] ;493
00081c e3500004 CMP r0,#4 ;493
000820 0a000001 BEQ |L1.2092| ;493
000824 e3a00001 MOV r0,#1 ;494
000828 eafffff4 B |L1.2048| ;494
|L1.2092|
00082c ef000002 SVC 0x2 ; formerly SWI ;497
000830 e1d600b2 LDRH r0,[r6,#2] ;498
000834 e1a00440 ASR r0,r0,#8 ;498
000838 e5c40005 STRB r0,[r4,#5] ;498
00083c e1d600b2 LDRH r0,[r6,#2] ;499
000840 e5c40004 STRB r0,[r4,#4] ;499
000844 e5d40004 LDRB r0,[r4,#4] ;500
000848 e35000ff CMP r0,#0xff ;500
00084c 1a000002 BNE |L1.2140| ;500
000850 e3a00001 MOV r0,#1 ;501
000854 e5c40003 STRB r0,[r4,#3] ;501
000858 ea000001 B |L1.2148| ;501
|L1.2140|
00085c e3a00000 MOV r0,#0 ;503
000860 e5c40003 STRB r0,[r4,#3] ;503
|L1.2148|
000864 e5d60001 LDRB r0,[r6,#1] ;505
000868 e5c40002 STRB r0,[r4,#2] ;505
00086c e2867008 ADD r7,r6,#8 ;506
000870 e1a05004 MOV r5,r4 ;507
000874 e4d70001 LDRB r0,[r7],#1 ;509
000878 e5c50000 STRB r0,[r5,#0] ;509
00087c e1a04005 MOV r4,r5 ;509
000880 e2855001 ADD r5,r5,#1 ;509
000884 e4d70001 LDRB r0,[r7],#1 ;513
000888 e4c50001 STRB r0,[r5],#1 ;513
00088c ef000003 SVC 0x3 ; formerly SWI ;539
000890 e3a00000 MOV r0,#0 ;540
000894 eaffffd9 B |L1.2048| ;540
|L1.2200|
000898 00000000 DCD OSIntNesting ;540
|L1.2204|
00089c 00000000 DCD OSTCBCur ;540
|L1.2208|
0008a0 00000000 DCD OSTCBPrioTbl ;540
|L1.2212|
0008a4 00000000 DCD OSEventFreeList ;540
|L1.2216|
0008a8 00000000 DCD OSRdyTbl ;540
|L1.2220|
0008ac 00000000 DCD OSRdyGrp ;540
|L1.2224|
0008b0 00000000 DCD OSMapTbl ;540
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -