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

📄 cswitch.s

📁 rtai-3.1-test3的源代码(Real-Time Application Interface )
💻 S
字号:
/*COPYRIGHT (C) 2000  Paolo Mantegazza (mantegazza@aero.polimi.it)This library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.*/#include <rtai_config.h> /* * Saving: a series of push (stw reg,-ofst(1)) of the general purpose registers, followed by push of some machine registers *         and the saving of the stack pointer (general register 1). * Restoring: recovery of the stack pointer, followed by a series of pop (lwz reg,-ofst(1)) of the same machine registers *            and of the general purpose registers. * Note that they are not really push/pop as we do not update the stack pointer, it is not needed and saves an instruction :-). */#include <asm/processor.h>	.globl up_task_swup_task_sw:	stw	31, -1*4(1)	stw	30, -2*4(1)	stw	29, -3*4(1)	stw	28, -4*4(1)	stw	27, -5*4(1)	stw	26, -6*4(1)	stw	25, -7*4(1)	stw	24, -8*4(1)	stw	23, -9*4(1)	stw	22,-10*4(1)	stw	21,-11*4(1)	stw	20,-12*4(1)	stw	19,-13*4(1)	stw	18,-14*4(1)	stw	17,-15*4(1)	stw	16,-16*4(1)	stw	15,-17*4(1)	stw	14,-18*4(1)	stw	13,-19*4(1)	stw	12,-20*4(1)	stw	11,-21*4(1)	stw	10,-22*4(1)	stw	 9,-23*4(1)	stw	 8,-24*4(1)	stw	 7,-25*4(1)	stw	 6,-26*4(1)	stw	 5,-27*4(1)	stw	 4,-28*4(1)	stw	 3,-29*4(1)	stw	 2,-30*4(1)	stw	 0,-31*4(1)	mfctr	 5	stw	 5,-32*4(1)	mfcr	 5	stw	 5,-33*4(1)	mfxer	 5	stw	 5,-34*4(1)	mflr	 5	stw	 5,-35*4(1)	mfmsr	 5	stw	 5,-36*4(1)	lwz	 5,0(3)	stw	 1,0(5)	stw	 4,0(3)	lwz	 1,0(4)	lwz 	 2,-36*4(1)	mtmsr	 2	lwz	 2,-35*4(1)	mtlr	 2	lwz	 2,-34*4(1)	mtxer	 2	lwz	 2,-33*4(1)	mtcr	 2	lwz	 2,-32*4(1)	mtctr	 2	lwz	 0,-31*4(1)	lwz	 2,-30*4(1)	lwz	 3,-29*4(1)	lwz	 4,-28*4(1)	lwz	 5,-27*4(1)	lwz	 6,-26*4(1)	lwz	 7,-25*4(1)	lwz	 8,-24*4(1)	lwz	 9,-23*4(1)	lwz	10,-22*4(1)	lwz	11,-21*4(1)	lwz	12,-20*4(1)	lwz	13,-19*4(1)	lwz	14,-18*4(1)	lwz	15,-17*4(1)	lwz	16,-16*4(1)	lwz	17,-15*4(1)	lwz	18,-14*4(1)	lwz	19,-13*4(1)	lwz	20,-12*4(1)	lwz	21,-11*4(1)	lwz	22,-10*4(1)	lwz	23, -9*4(1)	lwz	24, -8*4(1)	lwz	25, -7*4(1)	lwz	26, -6*4(1)	lwz	27, -5*4(1)	lwz	28, -4*4(1)	lwz	29, -3*4(1)	lwz	30, -2*4(1)	lwz	31, -1*4(1)	blr#ifdef CONFIG_RTAI_FPU_SUPPORT/* * Saving/restoring the FPU environment in PPC is like eating a cake, very simple. Just save/restore all of the floating  * point registers, recall they are always 64 bits long, and the floating point state register. Remark: at task init we * always enable FP, i.e. MSR flag FP set to 1, for real time tasks and accept default actions for faulty FLOPs, i.e. MSR  * flags FE0 and FE1 are set to zero. */	.globl __save_fpenv__save_fpenv:	stw	 0,  -4(1)	mfmsr    0	ori      0, 0,MSR_FP	mtmsr    0	lwz      0,  -4(1)	isync	stfd	 0, 0*8(3)	stfd	 1, 1*8(3)	stfd	 2, 2*8(3)	stfd	 3, 3*8(3)	stfd	 4, 4*8(3)	stfd	 5, 5*8(3)	stfd	 6, 6*8(3)	stfd	 7, 7*8(3)	stfd	 8, 8*8(3)	stfd	 9, 9*8(3)	stfd	10,10*8(3)	stfd	11,11*8(3)	stfd	12,12*8(3)	stfd	13,13*8(3)	stfd	14,14*8(3)	stfd	15,15*8(3)	stfd	16,16*8(3)	stfd	17,17*8(3)	stfd	18,18*8(3)	stfd	19,19*8(3)	stfd	20,20*8(3)	stfd	21,21*8(3)	stfd	22,22*8(3)	stfd	23,23*8(3)	stfd	24,24*8(3)	stfd	25,25*8(3)	stfd	26,26*8(3)	stfd	27,27*8(3)	stfd	28,28*8(3)	stfd	29,29*8(3)	stfd	30,30*8(3)	stfd	31,31*8(3)	mffs	 0	stfd	 0,32*8(3)	blr	.globl __restore_fpenv__restore_fpenv:	lfd	 0, 32*8(3)	mtfsf	 0xFF,0	lfd	 0, 0*8(3)	lfd	 1, 1*8(3)	lfd	 2, 2*8(3)	lfd	 3, 3*8(3)	lfd	 4, 4*8(3)	lfd	 5, 5*8(3)	lfd	 6, 6*8(3)	lfd	 7, 7*8(3)	lfd	 8, 8*8(3)	lfd	 9, 9*8(3)	lfd	10,10*8(3)	lfd	11,11*8(3)	lfd	12,12*8(3)	lfd	13,13*8(3)	lfd	14,14*8(3)	lfd	15,15*8(3)	lfd	16,16*8(3)	lfd	17,17*8(3)	lfd	18,18*8(3)	lfd	19,19*8(3)	lfd	20,20*8(3)	lfd	21,21*8(3)	lfd	22,22*8(3)	lfd	23,23*8(3)	lfd	24,24*8(3)	lfd	25,25*8(3)	lfd	26,26*8(3)	lfd	27,27*8(3)	lfd	28,28*8(3)	lfd	29,29*8(3)	lfd	30,30*8(3)	lfd	31,31*8(3)	blr#endif

⌨️ 快捷键说明

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