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

📄 _setjmp.s

📁 操作系统SunOS 4.1.3版本的源码
💻 S
字号:
	.data/*	.asciz	"@(#)_setjmp.s 1.1 92/07/30 SMI"	*/	.text#include "DEFS.h"#include "fpcrtdefs.h"#include "Wdefs.h"|_setjmp, _longjmp||	_longjmp(a, v)|causes a "return(v)" from the|last call to||	_setjmp(v)|by restoring d2-d7,a2-a7 (all the register variables) and|adjusting the stack||jmp_buf is set up as:||	_________________|0	|   onsigstack	||	-----------------|4	|    sigmask	||	-----------------|8	|       sp	||	-----------------|12	|       pc	||	-----------------|16	|       ps	||	-----------------|20	|	d2	||	-----------------|	|	...	||	-----------------|40	|	d7	||	-----------------|44	|	a2	||	-----------------|	|	...	||	-----------------|60	|	a6	||	-----------------|64	|	fp2a	||	-----------------|	|	fp2b	||	-----------------|	|	fp2c	||	-----------------|	|	...	||	-----------------|	|	fp7a	||	-----------------|	|	fp7b	||	-----------------|	|	fp7c	||	-----------------|136	|	fpa4a	||	-----------------|	|	fpa4b	||	-----------------|	|	...	||	-----------------|	|	fpa15a	||	-----------------|	|	fpa15b	||	-----------------|232	.text#ifdef S5EMULALTENTRY(setjmp)#endifENTRY(_setjmp)	movl	PARAM,a0	/* pointer to jmp_buf */	movl	PARAM0,a0@(12)	/* pc */#ifdef PROF	unlk	a6		/* restore A6 */#endif	movl	sp,a0@(8)	/* CURRENT sp */	moveml	d2-d7/a2-a6,a0@(20) /* rest of the registers */#ifdef PIC	PIC_SETUP(a1)	movel	a1@(_fp_switch:w),a1	movel	a1@,d0#else	movel   _fp_switch,d0#endif        cmpw    #FP_MC68881,d0        jne     3f	fmovemx	fp2-fp7,a0@(64)	jra	1f3:		cmpw	#FP_SUNFPA,d0	jne	1f	fmovemx	fp2-fp7,a0@(64)	lea	a0@(136),a0        movel   #(FPABASEADDRESS+0xc00+32),a1        movel   a1@+,a0@+               | fpa4        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa5        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa6        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa7        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa8        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa9        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa10        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa11        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa12        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa13        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa14        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa15        movel   a1@+,a0@+             1: 	clrl	d0		/* return 0 */	rts#ifdef S5EMULALTENTRY(longjmp)#endifENTRY(_longjmp)	movl	PARAM,a0	/* pointer to jmp_buf */#ifdef PIC	PIC_SETUP(a1)	movel	a1@(_fp_switch:w),a1	movel	a1@, d0#else	movel   _fp_switch,d0#endif        cmpw    #FP_MC68881,d0        jne     3f	fmovemx	a0@(64),fp2-fp7	jra	1f3:		cmpw	#FP_SUNFPA,d0	jne	1f	fmovemx	a0@(64),fp2-fp7	lea	a0@(136),a1        movel   #(FPABASEADDRESS+0xc00+32),a0        movel   a1@+,a0@+               | fpa4        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa5        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa6        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa7        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa8        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa9        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa10        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa11        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa12        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa13        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa14        movel   a1@+,a0@+                     movel   a1@+,a0@+               | fpa15        movel   a1@+,a0@+             	lea	a1@(-232),a01: 	movl	PARAM2,d0	/* value returned */	bne	1$	moveq	#1,d01$:	moveml	a0@(20),d2-d7/a2-a6	/* restore most of the registers */	movl	a0@(8),sp	/* restore sp */	movl	a0@(12),sp@	/* restore pc of call to setjmp to stack */	rts

⌨️ 快捷键说明

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