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

📄 os_cpu_a.s

📁 uCOS-II ports on Tensilica HiFi330 core.
💻 S
字号:
/******************************************************************************************************** *                                               uC/OS-II *                                         The Real-Time Kernel *                                       Xtensa Core Specific code * * File : OS_CPU.H *********************************************************************************************************/#include <xtensa/coreasm.h>#include <xtensa/simcall.h>	.global	OSStartHighRdy			/* Defined here			    */	.global	OSStartHighRdy			/* Defined here			    */	.global	OSTaskSwHook			/* Defined in OS_CPU_C.C	*/	.global	OSTCBHighRdy			/* UCOS variable		    */	.global	OSRunning			    /* UCOS variable		    *//********************************************************************************************************* *                                          START MULTITASKING *                                       void OSStartHighRdy(void) * * Note : OSStartHighRdy() is called by OSStart() and MUST: *           a) Call OSTaskSwHook() then, *           b) Set OSRunning to TRUE, *           c) Enable SW INTERRUPTS as these are used for the context switches!!! *           c) Switch to the highest priority task. * * Prototype  : void OSStartHighRdy(void) * **********************************************************************************************************/	.text	.align 4_OSTCBHighRdy:	.word	OSTCBHighRdy			/* UCOS variable */_OSRunning:	.word	OSRunning			    /* UCOS variable */#if OS_CPU_HOOKS_EN _OSTaskSwHook:	.word	OSTaskSwHook			/* Defined in OS_CPU_C.C */#endif /* OS_CPU_HOOKS_EN */_OSCtxSwIntsEnable:	.word   OSCtxSwIntsEnable		/* Defined in OS_CPU_C.C */	.text	.align 4OSStartHighRdy:	entry	a1, 32	/*	** UCOS-II requires a call to OSTaskSwHook() 	*/#if OS_CPU_HOOKS_EN 	l32r	a3, _OSTaskSwHook	callx8	a3#endif /* OS_CPU_HOOKS_EN */	/*	** Set the OSRunning	*/	l32r	a2, _OSRunning			/* a2 = OSRunning = &ValueOfOSRunning		*/	movi	a3, 1	s8i	a3, a2, 0			/* set ValueOfOSRunning = 1 = TRUE		*/	/*	** Enable context switch interrupts	*/	l32r	a3, _OSCtxSwIntsEnable	callx8	a3	/*	** Get the stack pointer of the task ready to run	*/	l32r	a3, _OSTCBHighRdy		/* a3 = *OSTCBHighRdy = &OSTCBHighRdy		*/	l32i	a3, a3, 0			/* a3 = &OSTCBHighRdy = &ValueOfOSTCBHighRdy	*/	l32i	a1, a3, 0			/* a1 = ValueOfOSTCBHighRdy			*/	/*	** Restore processor context and issue a "rfe"	*/       l32i a4, a1, 16    l32i a5, a1, 20    l32i a6, a1, 24    l32i a7, a1, 28    l32i a8, a1, 32    l32i a9, a1, 36    l32i a10, a1, 40    l32i a11, a1, 44    l32i a12, a1, 48            l32i a13, a1, 52    l32i a14, a1, 56    l32i a15, a1, 60            l32i    a2, a1, 80    wsr     a2, PS    rsync    l32i    a0, a1, 84    wsr     a0, EPC_1    l32i    a0, a1, 76    wsr     a0, SAR    #if XCHAL_HAVE_LOOPS        l32i    a0, a1, 64    wsr     a0, LBEG    l32i    a0, a1, 68    wsr     a0, LEND    l32i    a0, a1, 72    wsr     a0, LCOUNT#endif        isync    l32i    a0, a1, 0    l32i    a2, a1, 8    l32i    a3, a1, 12    l32i    a1, a1, 4    rfe

⌨️ 快捷键说明

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