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

📄 ucos_ii.asm

📁 uC/OS-II 在TI TMS320C240上的移植代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	PSHD	*
	RET

	.endfunc	517,000000000H,1

	.sym	_OS_EventTO,_OS_EventTO,32,2,0
	.globl	_OS_EventTO

	.func	535
;>>>> 	void  OS_EventTO (OS_EVENT *pevent)
******************************************************
* FUNCTION DEF : _OS_EventTO
******************************************************
_OS_EventTO:

LF9	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.sym	_pevent,-3+LF9,24,9,16,.fake0
	.line	2
	.line	3
;>>>> 	    if ((pevent->OSEventTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0x00) {
	LDPK	_OSTCBCur
	LAR	AR3,_OSTCBCur
	ADRK	9
	ZALS	*-,AR1
	CMPL
	SACL	* ,AR2
	LARK	AR2,-3+LF9
	MAR	*0+
	LAC	* ,AR3
	ADDK	4
	ADD	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR1
	ZALS	* ,AR4
	AND	* 
	SACL	* 
	BNZ	L18
	.line	4
;>>>> 	        pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
	MAR	* ,AR3
	ADRK	2
	LAC	* ,AR2
	CMPL
	LAR	AR4,* ,AR4
	MAR	*+
	AND	* 
	SACL	* 
L18:
	.line	6
;>>>> 	    OSTCBCur->OSTCBStat     = OS_STAT_RDY;       /* Set status to ready                                */
	LAR	AR3,_OSTCBCur
	LACK	0
	MAR	* ,AR3
	ADRK	5
	SACL	* 
	.line	7
;>>>> 	    OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;     /* No longer waiting for event                        */
	SBRK	2
	SACL	* ,AR1
EPI0_9:
	.line	8
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	542,000000000H,1

	.sym	_OS_EventWaitListInit,_OS_EventWaitListInit,32,2,0
	.globl	_OS_EventWaitListInit

	.func	559
;>>>> 	void  OS_EventWaitListInit (OS_EVENT *pevent)
******************************************************
* FUNCTION DEF : _OS_EventWaitListInit
******************************************************
_OS_EventWaitListInit:

LF10	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_pevent,-3+LF10,24,9,16,.fake0
	.sym	_ptbl,1,30,1,16
	.line	2
;>>>> 	    INT8U  *ptbl;
	.line	6
;>>>> 	    pevent->OSEventGrp = 0x00;                   /* No task waiting on event                           */
	LARK	AR2,-3+LF10
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	0
	MAR	*+
	SACL	* ,AR2
	.line	7
;>>>> 	    ptbl               = &pevent->OSEventTbl[0];
;>>>> 	#if OS_EVENT_TBL_SIZE > 0
	LAC	* 
	ADDK	4
	ADRK	4-LF10
	SACL	* 
	.line	10
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 1
	LAR	AR4,* ,AR4
	LACK	0
	SACL	*+,AR2
	SAR	AR4,* 
	.line	14
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 2
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 3
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 4
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 5
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 6
;>>>> 	    *ptbl++            = 0x00;
;>>>> 	#endif
;>>>> 	#if OS_EVENT_TBL_SIZE > 7
;>>>> 	    *ptbl              = 0x00;
;>>>> 	#endif
	LAR	AR4,* ,AR4
	SACL	*+,AR2
	SAR	AR4,* ,AR1
EPI0_10:
	.line	40
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	598,000000000H,2

	.sym	_OS_InitEventList,_OS_InitEventList,32,3,0

	.func	614
;>>>> 	static  void  OS_InitEventList (void)
;>>>> 	#if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
;>>>> 	#if (OS_MAX_EVENTS > 1)
;>>>> 	    INT16U     i;
;>>>> 	    OS_EVENT  *pevent1;
;>>>> 	    OS_EVENT  *pevent2;
******************************************************
* FUNCTION DEF : _OS_InitEventList
******************************************************
_OS_InitEventList:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.sym	_pevent1,2,24,1,16,.fake0
	.sym	_pevent2,3,24,1,16,.fake0
	.line	10
;>>>> 	    pevent1 = &OSEventTbl[0];
	LALK	_OSEventTbl+0
	LARK	AR2,2
	MAR	*0+
	SACL	*+
	.line	11
;>>>> 	    pevent2 = &OSEventTbl[1];
	LALK	_OSEventTbl+6
	SACL	* 
	.line	12
;>>>> 	    for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {                  /* Init. list of free EVENT control blocks  */
	LACK	0
	SBRK	2
	SACL	* 
	LAC	* 
	BNZ	L20
	MAR	*+
L19:
	.line	13
;>>>> 	        pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
	LAR	AR3,*+,AR3
	LACK	0
	SACL	* ,AR2
	.line	14
;>>>> 	        pevent1->OSEventPtr  = pevent2;
	LAC	* ,AR3
	ADRK	3
	SACL	* ,AR2
	.line	15
;>>>> 	        pevent1++;
	MAR	*-
	LAR	AR4,* ,AR4
	ADRK	6
	MAR	* ,AR2
	SAR	AR4,*+
	.line	16
;>>>> 	        pevent2++;
	LAR	AR3,* ,AR3
	ADRK	6
	MAR	* ,AR2
	SAR	AR3,* 
	.line	12
	SBRK	2
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	*+
	BZ	L19
L20:
	.line	18
;>>>> 	    pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
	LARK	AR2,2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* 
	.line	19
;>>>> 	    pevent1->OSEventPtr  = (OS_EVENT *)0;
	ADRK	3
	SACL	* ,AR1
	.line	20
;>>>> 	    OSEventFreeList      = &OSEventTbl[0];
;>>>> 	#else
;>>>> 	    OSEventFreeList              = &OSEventTbl[0];               /* Only have ONE event control block        */
;>>>> 	    OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
;>>>> 	    OSEventFreeList->OSEventPtr  = (OS_EVENT *)0;
;>>>> 	#endif
;>>>> 	#endif
	LALK	_OSEventTbl+0
	LDPK	_OSEventFreeList
	SACL	_OSEventFreeList
EPI0_11:
	.line	27
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	640,000000000H,4

	.sym	_OS_InitMisc,_OS_InitMisc,32,3,0

	.func	655
;>>>> 	static  void  OS_InitMisc (void)
;>>>> 	#if OS_TIME_GET_SET_EN > 0   
******************************************************
* FUNCTION DEF : _OS_InitMisc
******************************************************
_OS_InitMisc:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	4
;>>>> 	    OSTime        = 0L;                                          /* Clear the 32-bit system clock            */
;>>>> 	#endif
	LACK	0
	LDPK	_OSTime
	SACL	_OSTime
	SACH	_OSTime+1
	.line	7
;>>>> 	    OSIntNesting  = 0;                                           /* Clear the interrupt nesting counter      */
	SACL	_OSIntNesting
	.line	8
;>>>> 	    OSLockNesting = 0;                                           /* Clear the scheduling lock counter        */
	SACL	_OSLockNesting
	.line	10
;>>>> 	    OSTaskCtr     = 0;                                           /* Clear the number of tasks                */
	SACL	_OSTaskCtr
	.line	12
;>>>> 	    OSRunning     = FALSE;                                       /* Indicate that multitasking not started   */
	SACL	_OSRunning
	.line	14
;>>>> 	    OSCtxSwCtr    = 0;                                           /* Clear the context switch counter         */
	SACL	_OSCtxSwCtr
	SACH	_OSCtxSwCtr+1
	.line	15
;>>>> 	    OSIdleCtr     = 0L;                                          /* Clear the 32-bit idle counter            */
;>>>> 	#if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
;>>>> 	    OSIdleCtrRun  = 0L;
;>>>> 	    OSIdleCtrMax  = 0L;
;>>>> 	    OSStatRdy     = FALSE;                                       /* Statistic task is not ready              */
;>>>> 	#endif
	SACL	_OSIdleCtr
	SACH	_OSIdleCtr+1
EPI0_12:
	.line	22
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	676,000000000H,1

	.sym	_OS_InitRdyList,_OS_InitRdyList,32,3,0

	.func	691
;>>>> 	static  void  OS_InitRdyList (void)
;>>>> 	    INT16U   i;
;>>>> 	    INT8U   *prdytbl;
******************************************************
* FUNCTION DEF : _OS_InitRdyList
******************************************************
_OS_InitRdyList:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.sym	_prdytbl,2,30,1,16
	.line	7
;>>>> 	    OSRdyGrp      = 0x00;                                        /* Clear the ready list                     */
	LACK	0
	LDPK	_OSRdyGrp
	SACL	_OSRdyGrp
	.line	8
;>>>> 	    prdytbl       = &OSRdyTbl[0];
	LALK	_OSRdyTbl+0
	LARK	AR2,2
	MAR	*0+
	SACL	*-
	.line	9
;>>>> 	    for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
	LACK	0
	SACL	* 
	ZALS	* 
	SUBK	2
	BGEZ	L22
	MAR	*+
L21:
	.line	10
;>>>> 	        *prdytbl++ = 0x00;
	LAR	AR3,* ,AR3
	LACK	0
	SACL	*+,AR2
	SAR	AR3,*-
	.line	9
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBK	2
	BLZ	L21
L22:
	.line	13
;>>>> 	    OSPrioCur     = 0;
	LACK	0
	LDPK	_OSPrioCur
	SACL	_OSPrioCur
	.line	14
;>>>> 	    OSPrioHighRdy = 0;
	SACL	_OSPrioHighRdy
	.line	16
;>>>> 	    OSTCBHighRdy  = (OS_TCB *)0;                                 
	SACL	_OSTCBHighRdy
	.line	17
;>>>> 	    OSTCBCur      = (OS_TCB *)0;
	SACL	_OSTCBCur
EPI0_13:
	.line	18
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	708,000000000H,3

	.sym	_OS_InitTaskIdle,_OS_InitTaskIdle,32,3,0

	.func	724
;>>>> 	static  void  OS_InitTaskIdle (void)
;>>>> 	#if OS_TASK_CREATE_EXT_EN > 0
;>>>> 	    #if OS_STK_GROWTH == 1
;>>>> 	    (void)OSTaskCreateExt(OS_TaskIdle,
;>>>> 	                          (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;>>>> 	                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
;>>>> 	                          OS_IDLE_PRIO,                              /* Lowest priority level                */
;>>>> 	                          OS_TASK_IDLE_ID,
;>>>> 	                          &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
;>>>> 	                          OS_TASK_IDLE_STK_SIZE,
;>>>> 	                          (void *)0,                                 /* No TCB extension                     */
;>>>> 	                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;>>>> 	    #else
;>>>> 	    (void)OSTaskCreateExt(OS_TaskIdle,
;>>>> 	                          (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;>>>> 	                          &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
;>>>> 	                          OS_IDLE_PRIO,                              /* Lowest priority level                */
;>>>> 	                          OS_TASK_IDLE_ID,
;>>>> 	                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
;>>>> 	                          OS_TASK_IDLE_STK_SIZE,
;>>>> 	                          (void *)0,                                 /* No TCB extension                     */
;>>>> 	                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;>>>> 	    #endif
;>>>> 	#else
;>>>> 	    #if OS_STK_GROWTH == 1
;>>>> 	    (void)OSTaskCreate(OS_TaskIdle,
;>>>> 	                       (void *)0,
;>>>> 	                       &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;>>>> 	                       OS_IDLE_PRIO);
;>>>> 	    #else
******************************************************
* FUNCTION DEF : _OS_InitTaskIdle
******************************************************
_OS_InitTaskIdle:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	32
;>>>> 	    (void)OSTaskCreate(OS_TaskIdle,
;>>>> 	                       (void *)0,
;>>>> 	                       &OSTaskIdleStk[0],
;>>>> 	                       OS_IDLE_PRIO);
;>>>> 	    #endif
;>>>> 	#endif
	LACK	12
	SACL	*+
	LALK	_OSTaskIdleStk+0
	SACL	*+
	LACK	0
	SACL	*+
	LALK	_OS_TaskIdle+0
	SACL	*+
	CALL	_OSTaskCreate
	SBRK	4
EPI0_14:
	.line	38
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	761,000000000H,1

	.sym	_OS_InitTCBList,_OS_InitTCBList,32,3,0

	.func	830
;>>>> 	static  void  OS_InitTCBList (void)
;>>>> 	    INT8U    i;
;>>>> 	    OS_TCB  *ptcb1;
;>>>> 	    OS_TCB  *ptcb2;
******************************************************
* FUNCTION DEF : _OS_InitTCBList
******************************************************
_OS_InitTCBList:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.sym	_ptcb1,2,24,1,16,_os_tcb
	.sym	_ptcb2,3,24,1,16,_os_tcb
	.line	8
;>>>> 	    OSTCBList     = (OS_TCB *)0;                                 /* TCB Initialization                       */
	LACK	0
	LDPK	_OSTCBList
	SACL	_OSTCBList
	.line	9
;>>>> 	    for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* Clear the priority table                 */
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	13
	BGEZ	L24
L23:
	.line	10
;>>>> 	        OSTCBPrioTbl[i] = (OS_TCB *)0;
	LAC	* ,AR0
	ADLK	_OSTCBPrioTbl+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	.line	9
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	13
	BLZ	L23
L24:
	.line	12
;>>>> 	    ptcb1 = &OSTCBTbl[0];
	LALK	_OSTCBTbl+0
	MAR	*+
	SACL	*+
	.line	13
;>>>> 	    ptcb2 = &OSTCBTbl[1];
	LALK	_OSTCBTbl+11
	SACL	* 
	.line	14
;>>>> 	    for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs                  */
	LACK	0
	SBRK	2
	SACL	* 
	ZALS	* 
	SUBK	10
	BGEZ	L26
	MAR	*+
L25:
	.line	15
;>>>> 	        ptcb1->OSTCBNext = ptcb2;
	LAR	AR3,*+
	LAC	*-,AR3
	MAR	*+
	SACL	* ,AR2
	.line	16
;>>>> 	        ptcb1++;
	LAR	AR4,* ,AR4
	ADRK	11
	MAR	* ,AR2
	SAR	AR4,*+
	.line	17
;>>>> 	        ptcb2++;
	LAR	AR3,* ,AR3
	ADRK	11
	MAR	* ,AR2
	SAR	AR3,* 
	.line	14
	SBRK	2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBK	10
	BLZ	L25
L26:
	.line	19
;>>>> 	    ptcb1->OSTCBNext = (OS_TCB *)0;                              /* Last OS_TCB                              */
	LARK	AR2,2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	0
	MAR	*+
	SACL	* ,AR1
	.line	20
;>>>> 	    OSTCBFreeList    = &OSTCBTbl[0];
	LALK	_OSTCBTbl+0
	LDPK	_OSTCBFreeList
	SACL	_OSTCBFreeList
EPI0_15:
	.line	21
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	850,000000000H,4

	.sym	_OS_Sched,_OS_Sched,32,2,0
	.globl	_OS_Sched

	.func	869
;>>>> 	void  OS_Sched (void)
;>>>> 	#if OS_CRITICAL_METHOD == 3                            /* Allocate storage for CPU status register     */
;>>>> 	    OS_CPU_SR  cpu_sr;
;>>>> 	#endif    
;>>>> 	    INT8U      y;
******************************************************
* FUNCTION DEF : _OS_Sched
******************************************************
_OS_Sched:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.line	9
;>>>> 	    OS_ENTER_CRITICAL();
 SETC INTM

⌨️ 快捷键说明

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