1990-09-27 15:49:13 +00:00
|
|
|
#
|
|
|
|
#include "em_abs.h"
|
|
|
|
/*
|
|
|
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
|
|
*
|
|
|
|
* This product is part of the Amsterdam Compiler Kit.
|
|
|
|
*
|
|
|
|
* Permission to use, sell, duplicate or disclose this software must be
|
|
|
|
* obtained in writing. Requests for such permissions may be sent to
|
|
|
|
*
|
|
|
|
* Dr. Andrew S. Tanenbaum
|
|
|
|
* Wiskundig Seminarium
|
|
|
|
* Vrije Universiteit
|
|
|
|
* Postbox 7161
|
|
|
|
* 1007 MC Amsterdam
|
|
|
|
* The Netherlands
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
mes 2,_EM_WSIZE,_EM_PSIZE
|
|
|
|
|
|
|
|
exa environ
|
|
|
|
exa _end
|
|
|
|
exa _penvp
|
|
|
|
_penvp
|
|
|
|
bss _EM_PSIZE,0,0
|
|
|
|
|
1991-03-06 14:26:16 +00:00
|
|
|
exp $_m_a_i_n
|
|
|
|
pro $_m_a_i_n,0
|
1990-09-27 15:49:13 +00:00
|
|
|
loc 1336 ; EIOVFL | EIUND | ECONV | EFOVFL | EFUNFL
|
|
|
|
sim ; ignored
|
|
|
|
lal _EM_WSIZE+_EM_PSIZE
|
|
|
|
loi _EM_PSIZE
|
|
|
|
lae _penvp
|
|
|
|
sti _EM_PSIZE
|
|
|
|
/* Now test if environ is our own environ, or some user defined environ.
|
|
|
|
* First test if environ < _end. This is done for separate I&D systems.
|
|
|
|
*/
|
|
|
|
lae environ
|
|
|
|
lae _end
|
|
|
|
cmp
|
|
|
|
zge *1
|
|
|
|
/* Now environ < end, which means that we can derefence it without trouble
|
|
|
|
* on separate I&D systems.
|
|
|
|
*/
|
|
|
|
lae environ
|
|
|
|
loi 2
|
|
|
|
loc 2
|
|
|
|
loc _EM_WSIZE
|
|
|
|
cii
|
|
|
|
loc 21331 /* == 0x5353 */
|
|
|
|
bne *1
|
|
|
|
/* environ contains the magic value. Assume it's our own environ */
|
1990-09-27 16:52:07 +00:00
|
|
|
lae _penvp
|
1990-09-27 15:49:13 +00:00
|
|
|
loi _EM_PSIZE
|
|
|
|
lae environ
|
|
|
|
sti _EM_PSIZE
|
|
|
|
1
|
|
|
|
#if unix && ! (em22 || em24 || em44)
|
|
|
|
lpi $_ctch_
|
|
|
|
sig
|
|
|
|
asp _EM_PSIZE
|
|
|
|
#endif
|
|
|
|
lal _EM_WSIZE+_EM_PSIZE
|
|
|
|
loi _EM_PSIZE
|
|
|
|
lal _EM_WSIZE
|
|
|
|
loi _EM_PSIZE
|
|
|
|
lal 0
|
|
|
|
loi _EM_WSIZE
|
|
|
|
cal $main
|
|
|
|
asp _EM_WSIZE+_EM_PSIZE+_EM_PSIZE
|
|
|
|
lfr _EM_WSIZE
|
|
|
|
cal $exit
|
|
|
|
end
|
|
|
|
|
|
|
|
#if unix && ! (em22 || em24 || em44)
|
|
|
|
exp $_ctch_
|
|
|
|
pro $_ctch_,0
|
|
|
|
lol 0
|
|
|
|
loc EIDIVZ
|
|
|
|
beq *1
|
|
|
|
lol 0
|
|
|
|
loc EFDIVZ
|
|
|
|
beq *1
|
|
|
|
lol 0
|
|
|
|
trp
|
|
|
|
bra *3
|
|
|
|
1
|
|
|
|
loc 8
|
|
|
|
cal $_getpid
|
|
|
|
lfr _EM_WSIZE
|
|
|
|
cal $_kill
|
|
|
|
asp 2*_EM_WSIZE
|
|
|
|
3
|
|
|
|
lpi $_ctch_
|
|
|
|
sig
|
|
|
|
asp _EM_PSIZE
|
|
|
|
rtt
|
|
|
|
end 0
|
|
|
|
#endif
|