File:  [Research Unix] / researchv9 / libc / sys / setjmp.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:22:00 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

# C library -- setjmp, longjmp
#
#	longjmp(env, val)
#		will generate a "return(val)" from the last call to
#	setjmp(env)
#		by restoring a2 - a7, d2 - d7, pc, and sr from env
#		and doing a return
	.text
	.globl _setjmp
	.globl _longjmp

_setjmp:
	movl	sp@+,a1			| save pc and restore stack
	movl	sp@,a0
	moveml	#0xfcfc,a0@		| a2 - a7, d2 - d7
	movl	a1,a0@(48)		| pc
	clrl	d0			| return 0
	jmp	a1@

_longjmp:
	movl	sp@(4),a0
	movl	sp@(8),d0		| the return value
	movl	a0@(48),a1		| return pc
	moveml	a0@,#0xfcfc		| restore registers
	jmp	a1@

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.