📄 os_mutex.txt
字号:
000630 e5911000 LDR r1,[r1,#0] ;430 ; OSTCBCur
000634 e5d11020 LDRB r1,[r1,#0x20] ;430
000638 e1c00001 BIC r0,r0,r1 ;430
00063c e21000ff ANDS r0,r0,#0xff ;430
000640 e59f123c LDR r1,|L1.2180| ;430
000644 e5911000 LDR r1,[r1,#0] ;430 ; OSTCBCur
000648 e5d1101f LDRB r1,[r1,#0x1f] ;430
00064c e59f223c LDR r2,|L1.2192| ;430
000650 e7c20001 STRB r0,[r2,r1] ;430
000654 1a000007 BNE |L1.1656| ;430
000658 e59f0224 LDR r0,|L1.2180| ;431
00065c e5900000 LDR r0,[r0,#0] ;431 ; OSTCBCur
000660 e5d00021 LDRB r0,[r0,#0x21] ;431
000664 e59f1228 LDR r1,|L1.2196| ;431
000668 e5d11000 LDRB r1,[r1,#0] ;431 ; OSRdyGrp
00066c e1c10000 BIC r0,r1,r0 ;431
000670 e59f121c LDR r1,|L1.2196| ;431
000674 e5c10000 STRB r0,[r1,#0] ;431 ; OSRdyGrp
|L1.1656|
000678 e59f0204 LDR r0,|L1.2180| ;433
00067c e5900000 LDR r0,[r0,#0] ;433 ; OSTCBCur
000680 e5c0601d STRB r6,[r0,#0x1d] ;433
000684 e1a001c6 ASR r0,r6,#3 ;434
000688 e59f11f4 LDR r1,|L1.2180| ;434
00068c e5911000 LDR r1,[r1,#0] ;434 ; OSTCBCur
000690 e5c1001f STRB r0,[r1,#0x1f] ;434
000694 e59f01e8 LDR r0,|L1.2180| ;435
000698 e5900000 LDR r0,[r0,#0] ;435 ; OSTCBCur
00069c e5d0001f LDRB r0,[r0,#0x1f] ;435
0006a0 e59f11f0 LDR r1,|L1.2200| ;435
0006a4 e7d10000 LDRB r0,[r1,r0] ;435
0006a8 e59f11d4 LDR r1,|L1.2180| ;435
0006ac e5911000 LDR r1,[r1,#0] ;435 ; OSTCBCur
0006b0 e5c10021 STRB r0,[r1,#0x21] ;435
0006b4 e2060007 AND r0,r6,#7 ;436
0006b8 e59f11c4 LDR r1,|L1.2180| ;436
0006bc e5911000 LDR r1,[r1,#0] ;436 ; OSTCBCur
0006c0 e5c1001e STRB r0,[r1,#0x1e] ;436
0006c4 e59f01b8 LDR r0,|L1.2180| ;437
0006c8 e5900000 LDR r0,[r0,#0] ;437 ; OSTCBCur
0006cc e5d0001e LDRB r0,[r0,#0x1e] ;437
0006d0 e59f11c0 LDR r1,|L1.2200| ;437
0006d4 e7d10000 LDRB r0,[r1,r0] ;437
0006d8 e59f11a4 LDR r1,|L1.2180| ;437
0006dc e5911000 LDR r1,[r1,#0] ;437 ; OSTCBCur
0006e0 e5c10020 STRB r0,[r1,#0x20] ;437
0006e4 e59f0198 LDR r0,|L1.2180| ;438
0006e8 e5900000 LDR r0,[r0,#0] ;438 ; OSTCBCur
0006ec e5d00021 LDRB r0,[r0,#0x21] ;438
0006f0 e59f119c LDR r1,|L1.2196| ;438
0006f4 e5d11000 LDRB r1,[r1,#0] ;438 ; OSRdyGrp
0006f8 e1800001 ORR r0,r0,r1 ;438
0006fc e59f1190 LDR r1,|L1.2196| ;438
000700 e5c10000 STRB r0,[r1,#0] ;438 ; OSRdyGrp
000704 e59f0178 LDR r0,|L1.2180| ;439
000708 e5900000 LDR r0,[r0,#0] ;439 ; OSTCBCur
00070c e5d0001f LDRB r0,[r0,#0x1f] ;439
000710 e59f1178 LDR r1,|L1.2192| ;439
000714 e7d10000 LDRB r0,[r1,r0] ;439
000718 e59f1164 LDR r1,|L1.2180| ;439
00071c e5911000 LDR r1,[r1,#0] ;439 ; OSTCBCur
000720 e5d11020 LDRB r1,[r1,#0x20] ;439
000724 e1800001 ORR r0,r0,r1 ;439
000728 e59f1154 LDR r1,|L1.2180| ;439
00072c e5911000 LDR r1,[r1,#0] ;439 ; OSTCBCur
000730 e5d1101f LDRB r1,[r1,#0x1f] ;439
000734 e59f2154 LDR r2,|L1.2192| ;439
000738 e7c20001 STRB r0,[r2,r1] ;439
00073c e59f0140 LDR r0,|L1.2180| ;440
000740 e5900000 LDR r0,[r0,#0] ;440 ; OSTCBCur
000744 e59f113c LDR r1,|L1.2184| ;440
000748 e7810106 STR r0,[r1,r6,LSL #2] ;440
|L1.1868|
00074c e3a00001 MOV r0,#1 ;442
000750 e59f1130 LDR r1,|L1.2184| ;442
000754 e7810105 STR r0,[r1,r5,LSL #2] ;442
000758 e5d40001 LDRB r0,[r4,#1] ;443
00075c e3500000 CMP r0,#0 ;443
000760 0a000011 BEQ |L1.1964| ;443
000764 e3a02010 MOV r2,#0x10 ;445
000768 e3a01000 MOV r1,#0 ;445
00076c e1a00004 MOV r0,r4 ;445
000770 ebfffffe BL OS_EventTaskRdy ;445
000774 e1a06000 MOV r6,r0 ;445
000778 e1d400b2 LDRH r0,[r4,#2] ;446
00077c e2000cff AND r0,r0,#0xff00 ;446
000780 e1c400b2 STRH r0,[r4,#2] ;446
000784 e1d400b2 LDRH r0,[r4,#2] ;447
000788 e1800006 ORR r0,r0,r6 ;447
00078c e1c400b2 STRH r0,[r4,#2] ;447
000790 e59f00f0 LDR r0,|L1.2184| ;448
000794 e7900106 LDR r0,[r0,r6,LSL #2] ;448
000798 e5840004 STR r0,[r4,#4] ;448
00079c ef000003 SVC 0x3 ; formerly SWI ;449
0007a0 ebfffffe BL OS_Sched ;450
0007a4 e3a00000 MOV r0,#0 ;451
0007a8 eaffff79 B |L1.1428| ;451
|L1.1964|
0007ac e1d400b2 LDRH r0,[r4,#2] ;453
0007b0 e38000ff ORR r0,r0,#0xff ;453
0007b4 e1c400b2 STRH r0,[r4,#2] ;453
0007b8 e3a00000 MOV r0,#0 ;454
0007bc e5840004 STR r0,[r4,#4] ;454
0007c0 ef000003 SVC 0x3 ; formerly SWI ;455
0007c4 e3a00000 MOV r0,#0 ;456
0007c8 eaffff71 B |L1.1428| ;456
ENDP
OSMutexQuery PROC
;;;477 INT8U OSMutexQuery (OS_EVENT *pevent, OS_MUTEX_DATA *pdata)
;;;478 {
0007cc e92d41f0 PUSH {r4-r8,lr}
0007d0 e1a06000 MOV r6,r0
0007d4 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 ... */
0007d8 e59f00a0 LDR r0,|L1.2176|
0007dc e5d00000 LDRB r0,[r0,#0] ; OSIntNesting
0007e0 e3500000 CMP r0,#0
0007e4 da000001 BLE |L1.2032|
;;;487 return (OS_ERR_QUERY_ISR); /* ... can't QUERY mutex from an ISR */
0007e8 e3a00006 MOV r0,#6
;;;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 }
|L1.2028|
0007ec e8bd81f0 POP {r4-r8,pc}
|L1.2032|
0007f0 e3560000 CMP r6,#0 ;490
0007f4 1a000001 BNE |L1.2048| ;490
0007f8 e3a00004 MOV r0,#4 ;491
0007fc eafffffa B |L1.2028| ;491
|L1.2048|
000800 e5d60000 LDRB r0,[r6,#0] ;493
000804 e3500004 CMP r0,#4 ;493
000808 0a000001 BEQ |L1.2068| ;493
00080c e3a00001 MOV r0,#1 ;494
000810 eafffff5 B |L1.2028| ;494
|L1.2068|
000814 ef000002 SVC 0x2 ; formerly SWI ;497
000818 e1d600b2 LDRH r0,[r6,#2] ;498
00081c e1a00440 ASR r0,r0,#8 ;498
000820 e5c40005 STRB r0,[r4,#5] ;498
000824 e1d600b2 LDRH r0,[r6,#2] ;499
000828 e5c40004 STRB r0,[r4,#4] ;499
00082c e5d40004 LDRB r0,[r4,#4] ;500
000830 e35000ff CMP r0,#0xff ;500
000834 1a000002 BNE |L1.2116| ;500
000838 e3a00001 MOV r0,#1 ;501
00083c e5c40003 STRB r0,[r4,#3] ;501
000840 ea000001 B |L1.2124| ;501
|L1.2116|
000844 e3a00000 MOV r0,#0 ;503
000848 e5c40003 STRB r0,[r4,#3] ;503
|L1.2124|
00084c e5d60001 LDRB r0,[r6,#1] ;505
000850 e5c40002 STRB r0,[r4,#2] ;505
000854 e2867008 ADD r7,r6,#8 ;506
000858 e1a05004 MOV r5,r4 ;507
00085c e4d70001 LDRB r0,[r7],#1 ;509
000860 e5c50000 STRB r0,[r5,#0] ;509
000864 e1a04005 MOV r4,r5 ;509
000868 e2855001 ADD r5,r5,#1 ;509
00086c e4d70001 LDRB r0,[r7],#1 ;513
000870 e4c50001 STRB r0,[r5],#1 ;513
000874 ef000003 SVC 0x3 ; formerly SWI ;539
000878 e3a00000 MOV r0,#0 ;540
00087c eaffffda B |L1.2028| ;540
|L1.2176|
000880 00000000 DCD OSIntNesting ;540
|L1.2180|
000884 00000000 DCD OSTCBCur ;540
|L1.2184|
000888 00000000 DCD OSTCBPrioTbl ;540
|L1.2188|
00088c 00000000 DCD OSEventFreeList ;540
|L1.2192|
000890 00000000 DCD OSRdyTbl ;540
|L1.2196|
000894 00000000 DCD OSRdyGrp ;540
|L1.2200|
000898 00000000 DCD OSMapTbl ;540
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -