File:  [CSRG BSD Unix] / 43BSDReno / pgrm / lisp / franz / tahoe / pushframe.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:57 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43reno
BSD 4.3reno

/*
 * pushframe : stack a frame 
 * mess with the standard calls/callf call frame to put things in
 * the proper order. On entry to _Pushframe we have:
 * On entry to Pushframe:		On exit:
 * ______________			______________	
 * | second arg |			| second arg |
 * +------------+			+------------+
 * | first arg  |			| first arg  |
 * +------------+			+------------+
 * | 'class' arg|			| 'class' arg|
 * +------------+			+------------+
 * | saved fp   |  <<= fp		| return addr|
 * +------------+			+------------+
 * |mask|removed|			| old _errp  |
 * +------------+			+------------+
 * |return addr.|  <<= sp		| saved _bnp |
 * +------------+			+------------+
 *					| saved _np  |
 *					+------------+
 *					| saved lbot |	<<= d0
 *					+------------+
 *					| saved r13  |
 *					|       ...  |
 *					| saved r8   |  <<= sp
 *					+------------+
 */
	.text
	.globl	_Pushframe
	.globl	_qpushframe

_qpushframe:
_Pushframe:
	.word 0x0
	movl	(fp),fp		# give user his fp back
	movl	(sp),r0		# put program counter in temporary
	moval	12(sp),sp	# remove pc, 'mask', 'removed', and fp
	pushl	r0		# stack the return address
	pushl	_errp
	pushl	_bnp
	pushl	r6		# save _np
	pushl	r7		# save _lbot
	moval	(sp),r0		# return addr of lbot on stack to caller
	moval	-24(sp),sp
	storer	$0x3f00,(sp)	# save r13(fp), r12,r11,r10,r9,r8
	clrl	_retval		# set retval to C_INITIAL
	jmp	*40(sp)		# return to caller

unix.superglobalmegacorp.com

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