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

📄 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[12] * *	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 *//* * 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)	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)	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 + -