fis-gtm/sr_x86_64/op_bkpt.s

258 lines
5.5 KiB
ArmAsm

#################################################################
# #
# Copyright 2007, 2010 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. #
# #
#################################################################
# PAGE ,132
.title op_bkpt.s
# .386
# .MODEL FLAT, C
.include "linkage.si"
.INCLUDE "g_msf.si"
.sbttl opp_zstepret
# PAGE +
.DATA
.extern frame_pointer
.extern zstep_level
.text
.extern gtm_fetch
.extern op_retarg
.extern op_zbreak
.extern op_zst_break
.extern op_zst_over
.extern op_zstepret
.extern opp_ret
# PUBLIC opp_zstepret
ENTRY opp_zstepret
movq frame_pointer(REG_IP),REG64_ACCUM
movw msf_typ_off(REG64_ACCUM),REG16_SCRATCH1
testw $1,REG16_SCRATCH1
je l1
movq zstep_level(REG_IP),REG64_ARG2
cmpq REG64_ACCUM,REG64_ARG2
jg l1
call op_zstepret
l1: jmp opp_ret
# PUBLIC opp_zstepretarg
ENTRY opp_zstepretarg
pushq REG64_RET0
pushq REG64_RET1
movq frame_pointer(REG_IP),REG64_ACCUM
movw msf_typ_off(REG64_ACCUM),REG16_ARG2
testw $1,REG16_ARG2
je l2
movq zstep_level(REG_IP),REG64_ARG2
cmpq REG64_ACCUM, REG64_ARG2
jg l2
call op_zstepret
l2: popq REG64_RET1
popq REG64_RET0
jmp op_retarg
# opp_zstepretarg ENDP
# PUBLIC op_zbfetch
ENTRY op_zbfetch
movq frame_pointer(REG_IP),REG64_ACCUM
popq msf_mpc_off(REG64_ACCUM)
movb $0,REG8_ACCUM # variable length argumentt
call gtm_fetch
#popq REG64_ACCUM
#leaq (REG_SP,REG64_ACCUM,8),REG_SP
movq frame_pointer(REG_IP),REG64_ARG0
call op_zbreak
getframe
ret
# op_zbfetch ENDP
# PUBLIC op_zbstart
ENTRY op_zbstart
movq frame_pointer(REG_IP),REG64_ARG0
popq msf_mpc_off(REG64_ARG0)
call op_zbreak
getframe
ret
# op_zbstart ENDP
# PUBLIC op_zstepfetch
ENTRY op_zstepfetch
movq frame_pointer(REG_IP),REG64_ACCUM
popq msf_mpc_off(REG64_ACCUM)
movb $0,REG8_ACCUM # variable length argument
call gtm_fetch
#popq REG64_ACCUM
#leaq (REG_SP,REG64_ACCUM,8),REG_SP
call op_zst_break
getframe
ret
# op_zstepfetch ENDP
# PUBLIC op_zstepstart
ENTRY op_zstepstart
movq frame_pointer(REG_IP),REG64_ARG2
popq msf_mpc_off(REG64_ARG2)
call op_zst_break
getframe
ret
# op_zstepstart ENDP
# PUBLIC op_zstzbfetch
ENTRY op_zstzbfetch
movq frame_pointer(REG_IP),REG64_ACCUM
popq msf_mpc_off(REG64_ACCUM)
movb $0,REG8_ACCUM # variable length argument
call gtm_fetch
#popq REG64_ACCUM
#leaq (REG_SP,REG64_ACCUM,8),REG_SP
movq frame_pointer(REG_IP),REG64_ARG0
call op_zbreak
call op_zst_break
getframe
ret
# op_zstzbfetch ENDP
# PUBLIC op_zstzbstart
ENTRY op_zstzbstart
movq frame_pointer(REG_IP),REG64_ARG0
popq msf_mpc_off(REG64_ARG0)
call op_zbreak
call op_zst_break
getframe
ret
# op_zstzbstart ENDP
# PUBLIC op_zstzb_fet_over
ENTRY op_zstzb_fet_over
movq frame_pointer(REG_IP),REG64_ACCUM
popq msf_mpc_off(REG64_ACCUM)
movb $0,REG8_ACCUM # variable length argument
call gtm_fetch
#popq REG64_ACCUM
#leaq (REG_SP,REG64_ACCUM,8),REG_SP
movq frame_pointer(REG_IP),REG64_ARG0
call op_zbreak
movq zstep_level(REG_IP),REG64_ARG2
movq frame_pointer(REG_IP), REG64_SCRATCH1
cmpq REG64_SCRATCH1,REG64_ARG2
jae l3
cmpl $0,REG32_RET0
jne l5
jmp l4
l3: call op_zst_break
l4: getframe
ret
l5: call op_zst_over
movq frame_pointer(REG_IP),REG64_ARG2
pushq msf_mpc_off(REG_IP)
ret
# op_zstzb_fet_over ENDP
# PUBLIC op_zstzb_st_over
ENTRY op_zstzb_st_over
movq frame_pointer(REG_IP),REG64_ARG0
popq msf_mpc_off(REG64_ARG0)
call op_zbreak
movq zstep_level(REG_IP),REG64_ARG0
movq frame_pointer(REG_IP),REG64_SCRATCH1
cmpq REG64_SCRATCH1,REG64_ARG0
jae l6
cmpl $0,REG32_RET0
jne l8
jmp l7
l6: call op_zst_break
l7: getframe
ret
l8: call op_zst_over
movq frame_pointer(REG_IP),REG64_ARG0
pushq msf_mpc_off(REG64_ARG0)
ret
# op_zstzb_st_over ENDP
# PUBLIC op_zst_fet_over
ENTRY op_zst_fet_over
movq frame_pointer(REG_IP),REG64_ACCUM
popq msf_mpc_off(REG64_ACCUM)
movb $0,REG8_ACCUM # variable length argument
call gtm_fetch
#popq REG64_ACCUM
#leaq (REG_SP,REG64_ACCUM,8),REG_SP
movq zstep_level(REG_IP),REG64_ACCUM
movq frame_pointer(REG_IP),REG64_SCRATCH1
cmpq REG64_SCRATCH1,REG64_ACCUM
jg l9
call op_zst_break
getframe
ret
l9: call op_zst_over
movq frame_pointer(REG_IP),REG64_ACCUM
pushq msf_mpc_off(REG64_ACCUM)
ret
# op_zst_fet_over ENDP
# PUBLIC op_zst_st_over
ENTRY op_zst_st_over
movq frame_pointer(REG_IP),REG64_ACCUM
popq msf_mpc_off(REG64_ACCUM)
movq zstep_level(REG_IP),REG64_ARG2
cmpq REG64_ACCUM,REG64_ARG2
jg l10
call op_zst_break
getframe
ret
l10: call op_zst_over
movq frame_pointer(REG_IP),REG64_ARG2
pushq msf_mpc_off(REG64_ARG2)
ret
# op_zst_st_over ENDP
# PUBLIC opp_zst_over_ret
ENTRY opp_zst_over_ret
movq frame_pointer(REG_IP),REG64_ACCUM
movw msf_typ_off(REG64_ACCUM),REG16_ARG2
testw $1,REG16_ARG2
je l11
movq zstep_level(REG_IP),REG64_ARG2
movq msf_old_frame_off(REG64_ACCUM),REG64_ACCUM
cmpq REG64_ACCUM,REG64_ARG2
jg l11
call op_zstepret
l11: jmp opp_ret
# opp_zst_over_ret ENDP
# PUBLIC opp_zst_over_retarg
ENTRY opp_zst_over_retarg
pushq REG64_RET0
pushq REG64_RET1
movq frame_pointer(REG_IP),REG64_ACCUM
movw msf_typ_off(REG64_ACCUM),REG16_ARG2
testw $1,REG16_ARG2
je l12
movq zstep_level(REG_IP),REG64_ARG2
movq msf_old_frame_off(REG64_ACCUM),REG64_ACCUM
cmpq REG64_ACCUM,REG64_ARG2
jg l12
call op_zstepret
l12: popq REG64_RET1
popq REG64_RET0
jmp op_retarg
# opp_zst_over_retarg ENDP
# END