/* --- Copyright University of Sussex 1994. All rights reserved. ----------
 * File:	    S.axpvms/src/amain.s
 * Purpose:	    Entry routine for Pop
 * Author:	    John Gibson, Oct 21 1994
 */

	.title	"amain.o"	;;; must be the object file name

#_<

#_INCLUDE 'asm.ph'

>_#


	;;; entry point for the poplog system

$ROUTINE pop$entry_point, -
	KIND = stack, -
	SAVED_REGS = <r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,fp>, -
	HANDLER = _pop_errsig_handler

	$LINKAGE_SECTION
pifadr:	.long	__pop_invocation_fp
svbadr: .long	C_LAB(_special_var_block)
stpadr:	.long	C_LAB(setpop)

	$CODE_SECTION
	.base	rpb, $LS

	;;; save fp in __pop_invocation_fp for unwinding after an error signal
	ldl	rt0, pifadr
	stl	fp, (rt0)

	ldl	rsvb, svbadr		;;; set up _special_var_block in rusp
	ldl	rfalse, _svb_FALSE	;;; set rfalse to false
	INIT_POP_REGISTERS		;;; set pop lvar registers to false
	stl	rzero, _svb_IN_USER_EXTERN  ;;; clear _in_user_extern
	ldl	rusp, _svb_SAVED_USP	;;; temp user stack pointer in rusp
	ldl	rpb, stpadr		;;; get setpop
	ldl	rt0, _PD_EXECUTE(rpb)	;;; exec addr
	jsr	rret, (rt0)		;;; call setpop
	mov	#1, rt0			;;; normal exit status

	$RETURN				;;; return
$END_ROUTINE


SET_C_LAB(Sys$- _entry_point) = pop\$entry_point


	.end	pop$entry_point		;;; entry point
