92 lines
2.0 KiB
Plaintext
92 lines
2.0 KiB
Plaintext
#################################################################
|
|
# #
|
|
# Copyright 2001, 2011 Fidelity Information Services, Inc #
|
|
# #
|
|
# 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_frame_size = 40
|
|
|
|
SFT_COUNT = 0x01
|
|
SFT_DM = 0x02
|
|
SFT_REP_OP = 0x04
|
|
SFT_ZBRK_ACT = 0x08
|
|
SFT_DEV_ACT = 0x10
|
|
SFT_ZTRAP = 0x20
|
|
SFT_EXTFUN = 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
|