BSD 4 development
[unix-history] / usr / src / cmd / apl / apl_s.s
#
# This module contains the stack push routine and the fltused
# symbol definition. Push() doesn't have to be machine coded
# but it does get called alot. The fltused definition will
# prevent the loader from adding some printf-associated modules.
#
# If APL is to be loaded from a library, then some undefined
# symbol must be present in the module which contains the
# fltused definition. In that sense, it is necessary to
# have _push (or something) in machine code.
#
# Ross Harvey 18-May-78
#
.text
.globl _push
_push: .word 0
movl _sp, r0
# movl 4(ap),(r0)
# acbl $4,_sp,_staktop,ok
movl 4(ap),(r0)+
cmpl r0, _staktop
bgtr toobig
movl r0, _sp
ret
toobig: movl r0,_sp
calls $0,_newstak
ret