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

📄 os_sem.lst

📁 称植到lpc2124上的UCOS2.85版 是本人初学移植和ARM的成果 可能已有人上传类似的了
💻 LST
📖 第 1 页 / 共 5 页
字号:
 455:../OSsrc/os_sem.c **** #endif
 456:../OSsrc/os_sem.c **** 
 457:../OSsrc/os_sem.c **** 
 458:../OSsrc/os_sem.c **** 
 459:../OSsrc/os_sem.c **** #if OS_ARG_CHK_EN > 0
 460:../OSsrc/os_sem.c ****     if (pevent == (OS_EVENT *)0) {                    /* Validate 'pevent'                         
 829               	.LM123:
 830 02b4 892B      		or r24,r25
 831 02b6 19F4      		brne .L60
 461:../OSsrc/os_sem.c ****         return (OS_ERR_PEVENT_NULL);
 833               	.LM124:
 834 02b8 84E0      		ldi r24,lo8(4)
 835 02ba 90E0      		ldi r25,hi8(4)
 836 02bc 0895      		ret
 837               	.L60:
 462:../OSsrc/os_sem.c ****     }
 463:../OSsrc/os_sem.c **** #endif
 464:../OSsrc/os_sem.c ****     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {   /* Validate event block type                 
 839               	.LM125:
 840 02be 8081      		ld r24,Z
 841 02c0 8330      		cpi r24,lo8(3)
 842 02c2 19F0      		breq .L61
 465:../OSsrc/os_sem.c ****         return (OS_ERR_EVENT_TYPE);
 844               	.LM126:
 845 02c4 81E0      		ldi r24,lo8(1)
 846 02c6 90E0      		ldi r25,hi8(1)
 847 02c8 0895      		ret
 848               	.L61:
 466:../OSsrc/os_sem.c ****     }
 467:../OSsrc/os_sem.c ****     OS_ENTER_CRITICAL();
 850               	.LM127:
 851               	/* #APP */
 852 02ca F894      		cli
 468:../OSsrc/os_sem.c ****     if (pevent->OSEventGrp != 0) {                    /* See if any task waiting for semaphore     
 854               	.LM128:
 855               	/* #NOAPP */
 856 02cc 8581      		ldd r24,Z+5
 857 02ce 8823      		tst r24
 858 02d0 59F0      		breq .L62
 469:../OSsrc/os_sem.c ****                                                       /* Ready HPT waiting on event                
 470:../OSsrc/os_sem.c ****         (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_SEM, OS_STAT_PEND_OK);
 860               	.LM129:
 861 02d2 20E0      		ldi r18,lo8(0)
 862 02d4 41E0      		ldi r20,lo8(1)
 863 02d6 60E0      		ldi r22,lo8(0)
 864 02d8 70E0      		ldi r23,hi8(0)
 865 02da CF01      		movw r24,r30
 866 02dc 0E94 0000 		call OS_EventTaskRdy
 471:../OSsrc/os_sem.c ****         OS_EXIT_CRITICAL();
 868               	.LM130:
 869               	/* #APP */
 870 02e0 7894      		sei
 472:../OSsrc/os_sem.c ****         OS_Sched();                                   /* Find HPT ready to run                     
 872               	.LM131:
 873               	/* #NOAPP */
 874 02e2 0E94 0000 		call OS_Sched
 875 02e6 0AC0      		rjmp .L64
 876               	.L62:
 473:../OSsrc/os_sem.c ****         return (OS_ERR_NONE);
 474:../OSsrc/os_sem.c ****     }
 475:../OSsrc/os_sem.c ****     if (pevent->OSEventCnt < 65535u) {                /* Make sure semaphore will not overflow     
 878               	.LM132:
 879 02e8 8381      		ldd r24,Z+3
 880 02ea 9481      		ldd r25,Z+4
 881 02ec 2FEF      		ldi r18,hi8(-1)
 882 02ee 8F3F      		cpi r24,lo8(-1)
 883 02f0 9207      		cpc r25,r18
 884 02f2 39F0      		breq .L63
 476:../OSsrc/os_sem.c ****         pevent->OSEventCnt++;                         /* Increment semaphore count to register even
 886               	.LM133:
 887 02f4 0196      		adiw r24,1
 888 02f6 9483      		std Z+4,r25
 889 02f8 8383      		std Z+3,r24
 477:../OSsrc/os_sem.c ****         OS_EXIT_CRITICAL();
 891               	.LM134:
 892               	/* #APP */
 893 02fa 7894      		sei
 894               	/* #NOAPP */
 895               	.L64:
 478:../OSsrc/os_sem.c ****         return (OS_ERR_NONE);
 897               	.LM135:
 898 02fc 80E0      		ldi r24,lo8(0)
 899 02fe 90E0      		ldi r25,hi8(0)
 900 0300 0895      		ret
 901               	.L63:
 479:../OSsrc/os_sem.c ****     }
 480:../OSsrc/os_sem.c ****     OS_EXIT_CRITICAL();                               /* Semaphore value has reached its maximum   
 903               	.LM136:
 904               	/* #APP */
 905 0302 7894      		sei
 481:../OSsrc/os_sem.c ****     return (OS_ERR_SEM_OVF);
 907               	.LM137:
 908               	/* #NOAPP */
 909 0304 82E3      		ldi r24,lo8(50)
 910 0306 90E0      		ldi r25,hi8(50)
 482:../OSsrc/os_sem.c **** }
 912               	.LM138:
 913 0308 0895      		ret
 914               	/* epilogue: frame size=0 */
 915               	/* epilogue: noreturn */
 916               	/* epilogue end (size=0) */
 917               	/* function OSSemPost size 48 (48) */
 919               	.Lscope5:
 923               	.global	OSSemQuery
 925               	OSSemQuery:
 483:../OSsrc/os_sem.c **** 
 484:../OSsrc/os_sem.c **** /*$PAGE*/
 485:../OSsrc/os_sem.c **** /*
 486:../OSsrc/os_sem.c **** ***************************************************************************************************
 487:../OSsrc/os_sem.c **** *                                          QUERY A SEMAPHORE
 488:../OSsrc/os_sem.c **** *
 489:../OSsrc/os_sem.c **** * Description: This function obtains information about a semaphore
 490:../OSsrc/os_sem.c **** *
 491:../OSsrc/os_sem.c **** * Arguments  : pevent        is a pointer to the event control block associated with the desired
 492:../OSsrc/os_sem.c **** *                            semaphore
 493:../OSsrc/os_sem.c **** *
 494:../OSsrc/os_sem.c **** *              p_sem_data    is a pointer to a structure that will contain information about the
 495:../OSsrc/os_sem.c **** *                            semaphore.
 496:../OSsrc/os_sem.c **** *
 497:../OSsrc/os_sem.c **** * Returns    : OS_ERR_NONE         The call was successful and the message was sent
 498:../OSsrc/os_sem.c **** *              OS_ERR_EVENT_TYPE   If you are attempting to obtain data from a non semaphore.
 499:../OSsrc/os_sem.c **** *              OS_ERR_PEVENT_NULL  If 'pevent'     is a NULL pointer.
 500:../OSsrc/os_sem.c **** *              OS_ERR_PDATA_NULL   If 'p_sem_data' is a NULL pointer
 501:../OSsrc/os_sem.c **** ***************************************************************************************************
 502:../OSsrc/os_sem.c **** */
 503:../OSsrc/os_sem.c **** 
 504:../OSsrc/os_sem.c **** #if OS_SEM_QUERY_EN > 0
 505:../OSsrc/os_sem.c **** INT8U  OSSemQuery (OS_EVENT *pevent, OS_SEM_DATA *p_sem_data)
 506:../OSsrc/os_sem.c **** {
 927               	.LM139:
 928               	/* prologue: frame size=0 */
 929 030a CF93      		push r28
 930 030c DF93      		push r29
 931               	/* prologue end (size=2) */
 932 030e FC01      		movw r30,r24
 933 0310 DB01      		movw r26,r22
 507:../OSsrc/os_sem.c **** #if OS_LOWEST_PRIO <= 63
 508:../OSsrc/os_sem.c ****     INT8U     *psrc;
 509:../OSsrc/os_sem.c ****     INT8U     *pdest;
 510:../OSsrc/os_sem.c **** #else
 511:../OSsrc/os_sem.c ****     INT16U    *psrc;
 512:../OSsrc/os_sem.c ****     INT16U    *pdest;
 513:../OSsrc/os_sem.c **** #endif
 514:../OSsrc/os_sem.c ****     INT8U      i;
 515:../OSsrc/os_sem.c **** #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status regis
 516:../OSsrc/os_sem.c ****     OS_CPU_SR  cpu_sr = 0;
 517:../OSsrc/os_sem.c **** #endif
 518:../OSsrc/os_sem.c **** 
 519:../OSsrc/os_sem.c **** 
 520:../OSsrc/os_sem.c **** 
 521:../OSsrc/os_sem.c **** #if OS_ARG_CHK_EN > 0
 522:../OSsrc/os_sem.c ****     if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                    
 935               	.LM140:
 936 0312 892B      		or r24,r25
 937 0314 19F4      		brne .L66
 523:../OSsrc/os_sem.c ****         return (OS_ERR_PEVENT_NULL);
 939               	.LM141:
 940 0316 84E0      		ldi r24,lo8(4)
 941 0318 90E0      		ldi r25,hi8(4)
 942 031a 27C0      		rjmp .L65
 943               	.L66:
 524:../OSsrc/os_sem.c ****     }
 525:../OSsrc/os_sem.c ****     if (p_sem_data == (OS_SEM_DATA *)0) {                  /* Validate 'p_sem_data'                
 945               	.LM142:
 946 031c 6115      		cp r22,__zero_reg__
 947 031e 7105      		cpc r23,__zero_reg__
 948 0320 19F4      		brne .L67
 526:../OSsrc/os_sem.c ****         return (OS_ERR_PDATA_NULL);
 950               	.LM143:
 951 0322 89E0      		ldi r24,lo8(9)
 952 0324 90E0      		ldi r25,hi8(9)
 953 0326 21C0      		rjmp .L65
 954               	.L67:
 527:../OSsrc/os_sem.c ****     }
 528:../OSsrc/os_sem.c **** #endif
 529:../OSsrc/os_sem.c ****     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {        /* Validate event block type            
 956               	.LM144:
 957 0328 8081      		ld r24,Z
 958 032a 8330      		cpi r24,lo8(3)
 959 032c 19F0      		breq .L68
 530:../OSsrc/os_sem.c ****         return (OS_ERR_EVENT_TYPE);
 961               	.LM145:
 962 032e 81E0      		ldi r24,lo8(1)
 963 0330 90E0      		ldi r25,hi8(1)
 964 0332 1BC0      		rjmp .L65
 965               	.L68:
 531:../OSsrc/os_sem.c ****     }
 532:../OSsrc/os_sem.c ****     OS_ENTER_CRITICAL();
 967               	.LM146:
 968               	/* #APP */
 969 0334 F894      		cli
 533:../OSsrc/os_sem.c ****     p_sem_data->OSEventGrp = pevent->OSEventGrp;           /* Copy message mailbox wait list       
 971               	.LM147:
 972               	/* #NOAPP */
 973 0336 8581      		ldd r24,Z+5
 974 0338 EB01      		movw r28,r22
 975 033a 8A87      		std Y+10,r24
 534:../OSsrc/os_sem.c ****     psrc                   = &pevent->OSEventTbl[0];
 977               	.LM148:
 978 033c 9F01      		movw r18,r30
 979 033e 2A5F      		subi r18,lo8(-(6))
 980 0340 3F4F      		sbci r19,hi8(-(6))
 535:../OSsrc/os_sem.c ****     pdest                  = &p_sem_data->OSEventTbl[0];
 982               	.LM149:
 983 0342 AB01      		movw r20,r22
 984 0344 4E5F      		subi r20,lo8(-(2))
 985 0346 5F4F      		sbci r21,hi8(-(2))
 986 0348 97E0      		ldi r25,lo8(7)
 987               	.L72:
 536:../OSsrc/os_sem.c ****     for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
 537:../OSsrc/os_sem.c ****         *pdest++ = *psrc++;
 989               	.LM150:
 990 034a E901      		movw r28,r18
 991 034c 8991      		ld r24,Y+
 992 034e 9E01      		movw r18,r28
 993 0350 EA01      		movw r28,r20
 994 0352 8993      		st Y+,r24
 995 0354 AE01      		movw r20,r28
 997               	.LM151:
 998 0356 9150      		subi r25,lo8(-(-1))
 999 0358 97FF      		sbrs r25,7
 1000 035a F7CF      		rjmp .L72
 538:../OSsrc/os_sem.c ****     }
 539:../OSsrc/os_sem.c ****     p_sem_data->OSCnt = pevent->OSEventCnt;                /* Get semaphore count                  
 1002               	.LM152:
 1003 035c 8381      		ldd r24,Z+3
 1004 035e 9481      		ldd r25,Z+4
 1005 0360 8D93      		st X+,r24
 1006 0362 9C93      		st X,r25
 540:../OSsrc/os_sem.c ****     OS_EXIT_CRITICAL();
 1008               	.LM153:
 1009               	/* #APP */
 1010 0364 7894      		sei
 541:../OSsrc/os_sem.c ****     return (OS_ERR_NONE);
 1012               	.LM154:
 1013               	/* #NOAPP */
 1014 0366 80E0      		ldi r24,lo8(0)
 1015 0368 90E0      		ldi r25,hi8(0)
 1016               	.L65:
 1017               	/* epilogue: frame size=0 */
 1018 036a DF91      		pop r29
 1019 036c CF91      		pop r28
 1020 036e 0895      		ret
 1021               	/* epilogue end (size=3) */
 1022               	/* function OSSemQuery size 53 (48) */
 1029               	.Lscope6:
 1034               	.global	OSSemSet
 1036               	OSSemSet:
 542:../OSsrc/os_sem.c **** }
 543:../OSsrc/os_sem.c **** #endif                                                     /* OS_SEM_QUERY_EN                      
 544:../OSsrc/os_sem.c **** 
 545:../OSsrc/os_sem.c **** /*$PAGE*/
 546:../OSsrc/os_sem.

⌨️ 快捷键说明

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