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

📄 setjmp.s

📁 T-kernel 的extension源代码
💻 S
字号:
/* *---------------------------------------------------------------------- *    T-Kernel / Standard Extension * *    Copyright (C) 2006 by Ken Sakamura. All rights reserved. *    T-Kernel / Standard Extension is distributed  *      under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * *    Version:   1.00.00 *    Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* *	setjmp.S (libtkse) * *	setjmp/longjmp (MIPS) */#include <machine.h>#include <tk/asm.h>/* *	typedef	long long jmp_buf[25] * *	Registers to be saved in jmp_buf *	jmp_buf[0]	$16	s0 *	jmp_buf[1]	$17	s1 *	jmp_buf[2]	$18	s2 *	jmp_buf[3]	$19	s3 *	jmp_buf[4]	$20	s4 *	jmp_buf[5]	$21	s5 *	jmp_buf[6]	$22	s6 *	jmp_buf[7]	$23	s7 *	jmp_buf[8]	$28	gp *	jmp_buf[9]	$29	sp *	jmp_buf[10]	$30	fp *	jmp_buf[11]	$31	ra * *	jmp_buf[12]	$f20 *	jmp_buf[13]	$f21 *	jmp_buf[14]	$f22 *	jmp_buf[15]	$f23 *	jmp_buf[16]	$f24 *	jmp_buf[17]	$f25 *	jmp_buf[18]	$f26 *	jmp_buf[19]	$f27 *	jmp_buf[20]	$f28 *	jmp_buf[21]	$f29 *	jmp_buf[22]	$f30 *	jmp_buf[23]	$f31 *	jmp_buf[24]	FCR31 *//* * int __setjmp( jmp_buf env ) */	.text	.balign	4	.globl	Csym(__setjmp)	.type	Csym(__setjmp), @functionCsym(__setjmp):	sd	$s0,  0*8($a0)		// Save general purpose register	sd	$s1,  1*8($a0)	sd	$s2,  2*8($a0)	sd	$s3,  3*8($a0)	sd	$s4,  4*8($a0)	sd	$s5,  5*8($a0)	sd	$s6,  6*8($a0)	sd	$s7,  7*8($a0)	sd	$gp,  8*8($a0)	sd	$sp,  9*8($a0)	sd	$fp, 10*8($a0)	sd	$ra, 11*8($a0)	sdc1	$f20, 12*8($a0)		// Save FPU register	sdc1	$f21, 13*8($a0)	sdc1	$f22, 14*8($a0)	sdc1	$f23, 15*8($a0)	sdc1	$f24, 16*8($a0)	sdc1	$f25, 17*8($a0)	sdc1	$f26, 18*8($a0)	sdc1	$f27, 19*8($a0)	sdc1	$f28, 20*8($a0)	sdc1	$f29, 21*8($a0)	sdc1	$f30, 22*8($a0)	sdc1	$f31, 23*8($a0)	cfc1	$t0,  $31	sd	$t0,  24*8($a0)		// Save FPU control register	li	$v0, 0	jr	$ra/* * void longjmp( jmp_buf env, int rval ) */	.text	.align	4	.globl	Csym(longjmp)	.type	Csym(longjmp), @functionCsym(longjmp):	ld	$s0,  0*8($a0)		// Restore general purpose register	ld	$s1,  1*8($a0)	ld	$s2,  2*8($a0)	ld	$s3,  3*8($a0)	ld	$s4,  4*8($a0)	ld	$s5,  5*8($a0)	ld	$s6,  6*8($a0)	ld	$s7,  7*8($a0)	ld	$gp,  8*8($a0)	ld	$sp,  9*8($a0)	ld	$fp, 10*8($a0)	ld	$ra, 11*8($a0)	ldc1	$f20, 12*8($a0)		// Reset FPU register	ldc1	$f21, 13*8($a0)	ldc1	$f22, 14*8($a0)	ldc1	$f23, 15*8($a0)	ldc1	$f24, 16*8($a0)	ldc1	$f25, 17*8($a0)	ldc1	$f26, 18*8($a0)	ldc1	$f27, 19*8($a0)	ldc1	$f28, 20*8($a0)	ldc1	$f29, 21*8($a0)	ldc1	$f30, 22*8($a0)	ldc1	$f31, 23*8($a0)	ld	$t0,  24*8($a0)		// Reset FPU control register	ctc1	$t0,  $31	move	$v0, $a1	bnez	$a1, l1			// if ( rval == 0 ) rval = 1	li	$v0, 1  l1:	jr	$ra

⌨️ 快捷键说明

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