#################################################################
#								#
# Copyright (c) 2001-2019 Fidelity National Information		#
# Services, Inc. and/or its subsidiaries. All rights reserved.	#
#								#
#	This source code contains the intellectual property	#
#	of its copyright holder(s), and is made available	#
#	under a license.  If you do not know the terms of	#
#	the license, please stop and do not read further.	#
#								#
#################################################################

	.sbttl	g_msf.si
#	PAGE	+
#-----------------------------------------------
# Mumps stack frame manipulation macros
#  for the GNU gas i386 assembler version
#-----------------------------------------------
msf_rvector_off		=	0
msf_l_symtab_off	=	4
msf_mpc_off		=	8
msf_ctxt_off		=	12
msf_temps_ptr_off	=	16
msf_vartab_ptr_off	=	20
msf_vartab_len_off	=	24
msf_temp_mvals_off	=	26
msf_old_frame_off	=	28
msf_typ_off		=	32
msf_flags_off		=	34
msf_for_ctrl_stack	=	36
msf_restart_pc_off	=	40
msf_restart_ctxt_off	=	44

msf_frame_size		=	52

SFT_COUNT		=	0x01
SFT_DM			=	0x02
SFT_REP_OP		=	0x04
SFT_ZBRK_ACT		=	0x08
SFT_DEV_ACT		=	0x10
SFT_ZTRAP		=	0x20
SFT_ZTIMEOUT		=	0x40
SFT_ZSTEP_ACT		=	0x80
SFT_ZINTR		=	0x100

SFF_INDCE		=	0x01
SFF_ZTRAP_ERR		=	0x02
SFF_DEV_ACT_ERR		=	0x04
SFF_CI			=	0x08
SFF_ETRAP_ERR		=	0x10

	.sbttl	g_msf.si    putframe
.macro putframe
	movl	frame_pointer,%edx
	movl	%edi,msf_temps_ptr_off(%edx)
	movl	%esi,msf_l_symtab_off(%edx)
	movl	(%esp),%eax
	movl	%eax,msf_mpc_off(%edx)
.endm

.extern	error_return

	.sbttl	g_msf.si    getframe
.macro getframe
	movl	frame_pointer,%edi
	movb	msf_flags_off(%edi),%dl
	andb	$SFF_ETRAP_ERR,%dl
	jz	lab1\@
	call	error_return
lab1\@:
	movl	frame_pointer, %edx
	movl	msf_temps_ptr_off(%edx),%edi
	movl	msf_l_symtab_off(%edx),%esi
	pushl	msf_mpc_off(%edx)
.endm
	.sbttl	g_msf.si
mrt_jsb			=	0
mrt_src_len		=	12
mrt_src_addr		=	16
mrt_rtn_len		=	24
mrt_rtn_addr		=	28
mrt_var_ptr		=	32
mrt_var_len		=	36
mrt_lab_ptr		=	40
mrt_lab_len		=	44
mrt_lnr_ptr		=	48
mrt_lnr_len		=	52
mrt_ptxt_ptr		=	56
mrt_checksum		=	60
mrt_compiler_qlf	=	64
mrt_oldr_ptr		=	68
mrt_curr_ptr		=	72
mrt_tmp_mv		=	76
mrt_tmp_sz		=	78
