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

📄 sw.s

📁 rtlinux3.0 的源代码
💻 S
字号:
#include <asm/asm.h>#include <asm/bootinfo.h>#include <asm/cachectl.h>#include <asm/current.h>#include <asm/fpregdef.h>#include <asm/mipsregs.h>#include <asm/offset.h>#include <asm/page.h>#include <asm/pgtable.h>#include <asm/processor.h>#include <asm/regdef.h>#include <asm/stackframe.h>#include <asm/asmmacro.h>/* * void __rtl_init_state( task,fn,data,rt_startup ) */	.set	noreorder	.set	noat	.align	5	LEAF(__rtl_init_state)	.set	mips3	/* a4 <- task->stack-36*4 */	lw	t0, 0(a0)	subu	t0, t0, (36*4)	/* don't play smart, store all regs */	sw	$1, 1*4(t0)	sw	$2, 2*4(t0)	sw	$3, 3*4(t0)	sw	$4, 4*4(t0)	sw	$5, 5*4(t0)	sw	$6, 6*4(t0)	sw	$7, 7*4(t0)	sw	$8, 8*4(t0)	sw	$9, 9*4(t0)	sw	$10, 10*4(t0)	sw	$11, 11*4(t0)	sw	$12, 12*4(t0)	sw	$13, 13*4(t0)	sw	$14, 14*4(t0)	sw	$15, 15*4(t0)	sw	$16, 16*4(t0)	sw	$17, 17*4(t0)	sw	$18, 18*4(t0)	sw	$19, 19*4(t0)	sw	$20, 20*4(t0)	sw	$21, 21*4(t0)	sw	$22, 22*4(t0)	sw	$23, 23*4(t0)	sw	$24, 24*4(t0)	sw	$25, 25*4(t0)	sw	$26, 26*4(t0)	sw	$27, 27*4(t0)	sw	$28, 28*4(t0)	sw	$29, 29*4(t0)	sw	$30, 30*4(t0)	sw	$31, 31*4(t0)	/* hi and lo */	mfhi	t1	sw	t1, 32*4(t0)	mflo	t1	sw	t1, 33*4(t0)		/* ra <- rt_startup */	sw	a3, 31*4(t0)	/* arg1 <- fn, arg2 <- data */	sw	a1, 4*4(t0)	sw	a2, 5*4(t0)	/* new stack */	lw	t1, 0(a0)	sw	t1, 29*4(t0)	/* store stack position of saved regs */	sw	t0, 0(a0)		jr	ra	nop		END(__rtl_init_state)	/* * void rtl_switch_to( RTL_THREAD_STRUCT **, RTL_THREAD_STRUCT * ) */	.set	noreorder	.set	noat	.align	5	LEAF(rtl_switch_to)	.set	mips3	/* a3 <- *current */	lw	a3, 0(a0)	/* decrement stack to store regs */	subu	a2, sp, 36*4	/* save new stack in current->stack */	sw	a2, 0(a3)			/* don't play smart, store all regs */	sw	$1, 1*4(a2)	sw	$2, 2*4(a2)	sw	$3, 3*4(a2)	sw	$4, 4*4(a2)	sw	$5, 5*4(a2)	sw	$6, 6*4(a2)	sw	$7, 7*4(a2)	sw	$8, 8*4(a2)	sw	$9, 9*4(a2)	sw	$10, 10*4(a2)	sw	$11, 11*4(a2)	sw	$12, 12*4(a2)	sw	$13, 13*4(a2)	sw	$14, 14*4(a2)	sw	$15, 15*4(a2)	sw	$16, 16*4(a2)	sw	$17, 17*4(a2)	sw	$18, 18*4(a2)	sw	$19, 19*4(a2)	sw	$20, 20*4(a2)	sw	$21, 21*4(a2)	sw	$22, 22*4(a2)	sw	$23, 23*4(a2)	sw	$24, 24*4(a2)	sw	$25, 25*4(a2)	sw	$26, 26*4(a2)	sw	$27, 27*4(a2)	sw	$28, 28*4(a2)	sw	$29, 29*4(a2)	sw	$30, 30*4(a2)	sw	$31, 31*4(a2)	/* hi and lo */	mfhi	t1	sw	t1, 32*4(a2)	mflo	t1	sw	t1, 33*4(a2)		/* *current = next */	sw	a1, 0(a0)	/* a1 <- new->stack */	lw	a2, 0(a1)	/* restore regs */		/* hi and lo */	lw	t1, 32*4(a2)	mthi	t1	lw	t1, 33*4(a2)	mtlo	t1		/* general regs */	lw	$1, 1*4(a2)	lw	$2, 2*4(a2)	lw	$3, 3*4(a2)	/* need to restore a0, a1 so rt_startup() works */	lw	$4, 4*4(a2)	lw	$5, 5*4(a2)	/* skip a2, we're using it now */	lw	$7, 7*4(a2)	lw	$8, 8*4(a2)	lw	$9, 9*4(a2)	lw	$10, 10*4(a2)	lw	$11, 11*4(a2)	lw	$12, 12*4(a2)	lw	$13, 13*4(a2)	lw	$14, 14*4(a2)	lw	$15, 15*4(a2)	lw	$16, 16*4(a2)	lw	$17, 17*4(a2)	lw	$18, 18*4(a2)	lw	$19, 19*4(a2)	lw	$20, 20*4(a2)	lw	$21, 21*4(a2)	lw	$22, 22*4(a2)	lw	$23, 23*4(a2)	lw	$24, 24*4(a2)	lw	$25, 25*4(a2)	lw	$26, 26*4(a2)	lw	$27, 27*4(a2)	lw	$28, 28*4(a2)	lw	$29, 29*4(a2)	lw	$30, 30*4(a2)	lw	$31, 31*4(a2)	/* load a2 now that we're done with it */	lw	$6, 6*4(a2)	jr	$31	nop	END(rtl_switch_to)

⌨️ 快捷键说明

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