added head_ac.e
authoreck <none@none>
Thu, 27 Sep 1990 15:49:13 +0000 (15:49 +0000)
committereck <none@none>
Thu, 27 Sep 1990 15:49:13 +0000 (15:49 +0000)
lang/cem/libcc.ansi/.distr
lang/cem/libcc.ansi/MakeArch
lang/cem/libcc.ansi/Makefile
lang/cem/libcc.ansi/head_ac.e [new file with mode: 0644]

index d9f76aa..db8483e 100644 (file)
@@ -4,6 +4,7 @@ Makefile
 assert
 ctype
 errno
+head_ac.e
 headers
 locale
 make.proto
index 58dbe7d..addd9a3 100755 (executable)
@@ -37,6 +37,7 @@ then
        echo MakeArch >> OLIST
        echo Makefile >> OLIST
        echo make.proto >> OLIST
+       echo head_ac.e >> OLIST
 fi
 
 DIRS=`cat LIST`
index 2155ad8..4667608 100644 (file)
@@ -21,6 +21,13 @@ clean:
        (cd ctype; make clean)
        (cd stdlib; make clean)
 
+headcp:        head
+       ../../install head_$(PREF).$(SUF) head_$(PREF)
+       rm -f head_$(PREF).$(SUF)
+
+head:  head_$(PREF).e
+       make -r -f make.proto "CC=$(MACH)" "CFLAGS=-I$(EMHOME)/h $(MACHFL)" head_$(PREF).$(SUF)
+
 tail:  lib
 
 tailcp: tail
diff --git a/lang/cem/libcc.ansi/head_ac.e b/lang/cem/libcc.ansi/head_ac.e
new file mode 100644 (file)
index 0000000..998112f
--- /dev/null
@@ -0,0 +1,102 @@
+#
+#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
+ *
+ */
+
+/* Author: E.G. Keizer */
+
+ mes 2,_EM_WSIZE,_EM_PSIZE
+
+ exa environ
+ exa _end
+ exa _penvp
+_penvp
+ bss _EM_PSIZE,0,0
+
+ exp $m_a_i_n
+ pro $m_a_i_n,0
+ 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 */
+ lae _envp
+ 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