Merge deletion of many undead files.

This commit is contained in:
George Koehler
2012-09-23 15:31:16 -04:00
680 changed files with 0 additions and 68171 deletions

View File

@@ -1,10 +0,0 @@
case $# in
1) DEST="$1"
SRC=`basename $DEST`
;;
2) DEST="$2"
SRC="$1"
;;
*) echo $0 [source] destination ;;
esac
cmp "$SRC" ../../$DEST

View File

@@ -1,267 +0,0 @@
#define C_aar O_aar
#define C_aar_narg O_aar_narg
#define C_adf O_adf
#define C_adf_narg O_adf_narg
#define C_adi O_adi
#define C_adi_narg O_adi_narg
#define C_adp O_adp
#define C_ads O_ads
#define C_ads_narg O_ads_narg
#define C_adu O_adu
#define C_adu_narg O_adu_narg
#define C_and O_and
#define C_and_narg O_and_narg
#define C_asp O_asp
#define C_ass O_ass
#define C_ass_narg O_ass_narg
#define C_beq O_beq
#define C_bge O_bge
#define C_bgt O_bgt
#define C_ble O_ble
#define C_blm O_blm
#define C_bls O_bls
#define C_bls_narg O_bls_narg
#define C_blt O_blt
#define C_bne O_bne
#define C_bra O_bra
#define C_bss_cst O_bss_cst
#define C_bss_fcon O_bss_fcon
#define C_bss_pnam O_bss_pnam
#define C_bss_ucon O_bss_ucon
#define C_cai O_cai
#define C_cal O_cal
#define C_cff O_cff
#define C_cfi O_cfi
#define C_cfu O_cfu
#define C_cif O_cif
#define C_cii O_cii
#define C_ciu O_ciu
#define C_close O_close
#define C_cmf O_cmf
#define C_cmf_narg O_cmf_narg
#define C_cmi O_cmi
#define C_cmi_narg O_cmi_narg
#define C_cmp O_cmp
#define C_cms O_cms
#define C_cms_narg O_cms_narg
#define C_cmu O_cmu
#define C_cmu_narg O_cmu_narg
#define C_com O_com
#define C_com_narg O_com_narg
#define C_con_cst O_con_cst
#define C_con_fcon O_con_fcon
#define C_con_pnam O_con_pnam
#define C_con_scon O_con_scon
#define C_con_ucon O_con_ucon
#define C_csa O_csa
#define C_csa_narg O_csa_narg
#define C_csb O_csb
#define C_csb_narg O_csb_narg
#define C_cst O_cst
#define C_cuf O_cuf
#define C_cui O_cui
#define C_cuu O_cuu
#define C_dch O_dch
#define C_dec O_dec
#define C_dee O_dee
#define C_del O_del
#define C_df_dlb O_df_dlb
#define C_df_dnam O_df_dnam
#define C_df_ilb O_df_ilb
#define C_dlb O_dlb
#define C_dnam O_dnam
#define C_dup O_dup
#define C_dus O_dus
#define C_dus_narg O_dus_narg
#define C_dvf O_dvf
#define C_dvf_narg O_dvf_narg
#define C_dvi O_dvi
#define C_dvi_narg O_dvi_narg
#define C_dvu O_dvu
#define C_dvu_narg O_dvu_narg
#define C_end O_end
#define C_end_narg O_end_narg
#define C_exc O_exc
#define C_exg O_exg
#define C_exg_narg O_exg_narg
#define C_exp O_exp
#define C_fcon O_fcon
#define C_fef O_fef
#define C_fef_narg O_fef_narg
#define C_fif O_fif
#define C_fif_narg O_fif_narg
#define C_fil O_fil
#define C_gto O_gto
#define C_hol_cst O_hol_cst
#define C_hol_fcon O_hol_fcon
#define C_hol_pnam O_hol_pnam
#define C_hol_ucon O_hol_ucon
#define C_icon O_icon
#define C_ilb O_ilb
#define C_inc O_inc
#define C_ine O_ine
#define C_init O_init
#define C_inl O_inl
#define C_inn O_inn
#define C_inn_narg O_inn_narg
#define C_inp O_inp
#define C_ior O_ior
#define C_ior_narg O_ior_narg
#define C_lae O_lae
#define C_lal O_lal
#define C_lar O_lar
#define C_lar_narg O_lar_narg
#define C_ldc O_ldc
#define C_lde O_lde
#define C_ldf O_ldf
#define C_ldl O_ldl
#define C_lfr O_lfr
#define C_lil O_lil
#define C_lim O_lim
#define C_lin O_lin
#define C_lni O_lni
#define C_loc O_loc
#define C_loe O_loe
#define C_lof O_lof
#define C_loi O_loi
#define C_lol O_lol
#define C_lor O_lor
#define C_los O_los
#define C_los_narg O_los_narg
#define C_lpb O_lpb
#define C_lpi O_lpi
#define C_lxa O_lxa
#define C_lxl O_lxl
#define C_magic O_magic
#define C_mes_begin O_mes_begin
#define C_mes_end O_mes_end
#define C_mlf O_mlf
#define C_mlf_narg O_mlf_narg
#define C_mli O_mli
#define C_mli_narg O_mli_narg
#define C_mlu O_mlu
#define C_mlu_narg O_mlu_narg
#define C_mon O_mon
#define C_ngf O_ngf
#define C_ngf_narg O_ngf_narg
#define C_ngi O_ngi
#define C_ngi_narg O_ngi_narg
#define C_nop O_nop
#define C_open O_open
#define C_pnam O_pnam
#define C_pro O_pro
#define C_pro_narg O_pro_narg
#define C_rck O_rck
#define C_rck_narg O_rck_narg
#define C_ret O_ret
#define C_rmi O_rmi
#define C_rmi_narg O_rmi_narg
#define C_rmu O_rmu
#define C_rmu_narg O_rmu_narg
#define C_rol O_rol
#define C_rol_narg O_rol_narg
#define C_rom_cst O_rom_cst
#define C_rom_fcon O_rom_fcon
#define C_rom_pnam O_rom_pnam
#define C_rom_scon O_rom_scon
#define C_rom_ucon O_rom_ucon
#define C_ror O_ror
#define C_ror_narg O_ror_narg
#define C_rtt O_rtt
#define C_sar O_sar
#define C_sar_narg O_sar_narg
#define C_sbf O_sbf
#define C_sbf_narg O_sbf_narg
#define C_sbi O_sbi
#define C_sbi_narg O_sbi_narg
#define C_sbs O_sbs
#define C_sbs_narg O_sbs_narg
#define C_sbu O_sbu
#define C_sbu_narg O_sbu_narg
#define C_scon O_scon
#define C_sde O_sde
#define C_sdf O_sdf
#define C_sdl O_sdl
#define C_set O_set
#define C_set_narg O_set_narg
#define C_sig O_sig
#define C_sil O_sil
#define C_sim O_sim
#define C_sli O_sli
#define C_sli_narg O_sli_narg
#define C_slu O_slu
#define C_slu_narg O_slu_narg
#define C_sri O_sri
#define C_sri_narg O_sri_narg
#define C_sru O_sru
#define C_sru_narg O_sru_narg
#define C_ste O_ste
#define C_stf O_stf
#define C_sti O_sti
#define C_stl O_stl
#define C_str O_str
#define C_sts O_sts
#define C_sts_narg O_sts_narg
#define C_teq O_teq
#define C_tge O_tge
#define C_tgt O_tgt
#define C_tle O_tle
#define C_tlt O_tlt
#define C_tne O_tne
#define C_trp O_trp
#define C_ucon O_ucon
#define C_xor O_xor
#define C_xor_narg O_xor_narg
#define C_zeq O_zeq
#define C_zer O_zer
#define C_zer_narg O_zer_narg
#define C_zge O_zge
#define C_zgt O_zgt
#define C_zle O_zle
#define C_zlt O_zlt
#define C_zne O_zne
#define C_zre O_zre
#define C_zrf O_zrf
#define C_zrf_narg O_zrf_narg
#define C_zrl O_zrl
#define _10_C_hol_ilb _10_O_hol_ilb
#define _11_C_bss_dnam _11_O_bss_dnam
#define _12_C_bss_dlb _12_O_bss_dlb
#define _13_C_bss_icon _13_O_bss_icon
#define _14_C_bss_ilb _14_O_bss_ilb
#define _15_C_con_dnam _15_O_con_dnam
#define _16_C_con_dlb _16_O_con_dlb
#define _17_C_con_icon _17_O_con_icon
#define _18_C_con_ilb _18_O_con_ilb
#define _19_C_gto_dnam _19_O_gto_dnam
#define _1_C_lae_dnam _1_O_lae_dnam
#define _20_C_gto_dlb _20_O_gto_dlb
#define _21_C_ine_dnam _21_O_ine_dnam
#define _22_C_ine_dlb _22_O_ine_dlb
#define _23_C_rom_dnam _23_O_rom_dnam
#define _24_C_rom_dlb _24_O_rom_dlb
#define _25_C_ina_dnam _25_O_ina_dnam
#define _26_C_ina_dlb _26_O_ina_dlb
#define _27_C_rom_icon _27_O_rom_icon
#define _28_C_rom_ilb _28_O_rom_ilb
#define _29_C_ste_dnam _29_O_ste_dnam
#define _2_C_lae_dlb _2_O_lae_dlb
#define _30_C_ste_dlb _30_O_ste_dlb
#define _31_C_fil_dnam _31_O_fil_dnam
#define _32_C_fil_dlb _32_O_fil_dlb
#define _33_C_lde_dnam _33_O_lde_dnam
#define _34_C_lde_dlb _34_O_lde_dlb
#define _35_C_loe_dnam _35_O_loe_dnam
#define _36_C_loe_dlb _36_O_loe_dlb
#define _37_C_exa_dnam _37_O_exa_dnam
#define _38_C_exa_dlb _38_O_exa_dlb
#define _39_C_dee_dnam _39_O_dee_dnam
#define _3_C_sde_dnam _3_O_sde_dnam
#define _40_C_dee_dlb _40_O_dee_dlb
#define _4_C_sde_dlb _4_O_sde_dlb
#define _5_C_zre_dnam _5_O_zre_dnam
#define _6_C_zre_dlb _6_O_zre_dlb
#define _7_C_hol_dnam _7_O_hol_dnam
#define _8_C_hol_dlb _8_O_hol_dlb
#define _9_C_hol_icon _9_O_hol_icon

View File

@@ -1,33 +0,0 @@
case $# in
1) DEST="$1"
SRC=`basename $DEST`
;;
2) DEST="$2"
SRC="$1"
;;
*) echo 'Usage:' $0 [source] destination 1>&2
exit 1
;;
esac
DIR=`expr "$DEST" ':' '\(.*\)/[^/]*' '|' "XXXX"`
case $DIR in
XXXX) echo 'Illegal desination argument:' "$DEST"
exit 1
;;
esac
mkdir ../../$DIR > /dev/null 2>&1
chmod 775 ../../$DIR > /dev/null 2>&1
if cp "$SRC" ../../$DEST >/dev/null 2>&1 ||
{ rm -f ../../$DEST >/dev/null 2>&1 &&
cp "$SRC" ../../$DEST >/dev/null 2>&1
}
then
if (ar t ../../$DEST | grep __.SYMDEF ) >/dev/null 2>&1
then
ranlib ../../$DEST
fi
exit 0
else
echo Sorry, can not create "$DEST".
exit 1
fi

View File

@@ -1,63 +0,0 @@
EMHOME=../../..
HDIR = $(EMHOME)/modules/h
INSTALL=$(EMHOME)/modules/install
COMPARE=$(EMHOME)/modules/compare
INCLUDES = -I. -I$(HDIR)
AR = ar
SUF = o
LIBSUF = a
CFLAGS = -O $(INCLUDES) $(COPT)
CSRC = Malloc.c\
Salloc.c\
Srealloc.c\
Realloc.c\
botch.c\
clear.c\
st_alloc.c\
std_alloc.c \
No_Mem.c
SOURCES = alloc.h\
$(CSRC)
OBJECTS = botch.$(SUF) clear.$(SUF) st_alloc.$(SUF) Malloc.$(SUF) \
Salloc.$(SUF) \
Srealloc.$(SUF) Realloc.$(SUF) std_alloc.$(SUF) No_Mem.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: liballoc.$(LIBSUF)
liballoc.$(LIBSUF): $(OBJECTS)
$(AR) cr liballoc.$(LIBSUF) $(OBJECTS)
-sh -c 'ranlib liballoc.$(LIBSUF)'
install: all
$(INSTALL) lib/liballoc.$(LIBSUF)
$(INSTALL) man/alloc.3
$(INSTALL) h/alloc.h
cmp: all
-$(COMPARE) lib/liballoc.$(LIBSUF)
-$(COMPARE) man/alloc.3
-$(COMPARE) h/alloc.h
pr:
@pr Makefile $(SOURCES)
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF)
lintlib:
lint $(INCLUDES) -Calloc $(CSRC)
mv llib-lalloc.ln $(EMHOME)/modules/lib
st_alloc.$(SUF): alloc.h
std_alloc.$(SUF): alloc.h
Malloc.$(SUF): alloc.h

View File

@@ -1,12 +0,0 @@
/* $Header$ */
/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
#ifdef DEBUG
#define PRIVATE
#else
#define PRIVATE static
#endif
#define EXPORT

View File

@@ -1,43 +0,0 @@
EMHOME=../../..
MODULES=$(EMHOME)/modules
HDIR = $(MODULES)/h
INCLUDES = -I$(HDIR)
CFLAGS = $(INCLUDES) -O $(COPT)
INSTALL = $(MODULES)/install
COMPARE = $(MODULES)/compare
AR = ar
SUF = o
LIBSUF = a
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: libassert.$(LIBSUF)
libassert.$(LIBSUF): BadAssert.$(SUF)
$(AR) r libassert.$(LIBSUF) BadAssert.$(SUF)
-sh -c 'ranlib libassert.$(LIBSUF)'
install: all
$(INSTALL) lib/libassert.$(LIBSUF)
$(INSTALL) man/assert.3
$(INSTALL) h/assert.h
cmp: all
-$(COMPARE) lib/libassert.$(LIBSUF)
-$(COMPARE) man/assert.3
-$(COMPARE) h/assert.h
pr:
@pr Makefile assert.h BadAssert.c
opr:
make pr | opr
clean:
rm -f *.$(LIBSUF) *.$(SUF)
lintlib:
lint $(INCLUDES) -Cassert BadAssert.c
mv llib-lassert.ln $(MODULES)/lib

View File

@@ -1,68 +0,0 @@
EMHOME = ../../..
ETC = $(EMHOME)/etc
INSTALL = $(EMHOME)/modules/install
COMPARE = $(EMHOME)/modules/compare
CFLAGS = -I$(EMHOME)/h -I$(EMHOME)/modules/h -I$(EMHOME)/modules/src/read_em -I. -O $(COPT)
AR = ar
SUF = o
LIBSUF = a
SRC = bhcst.c bhdlb.c bhdnam.c bhfcon.c bhicon.c bhilb.c bhpnam.c bhucon.c \
crcst.c crdlb.c crdnam.c crxcon.c crilb.c crpnam.c crscon.c \
cst.c dfdlb.c dfdnam.c dfilb.c dlb.c dnam.c end.c endarg.c \
exc.c fcon.c getid.c icon.c ilb.c insert.c internerr.c \
msend.c op.c opcst.c opdlb.c opdnam.c opilb.c opnarg.c oppnam.c pnam.c \
pro.c pronarg.c msstart.c psdlb.c psdnam.c pspnam.c scon.c ucon.c \
C_out.c failed.c em.c
OBS = failed.$(SUF) insert.$(SUF) internerr.$(SUF) getid.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: em_codeEK.h libeme.$(LIBSUF) libemk.$(LIBSUF) em_code.3
install: all
$(INSTALL) lib/libeme.$(LIBSUF)
$(INSTALL) lib/libemk.$(LIBSUF)
$(INSTALL) man/em_code.3
$(INSTALL) h/em_codeEK.h
compare: all
-$(COMPARE) lib/libeme.$(LIBSUF)
-$(COMPARE) lib/libemk.$(LIBSUF)
-$(COMPARE) man/em_code.3
-$(COMPARE) h/em_codeEK.h
em_code.3: em_code.3X
-sh -c 'tbl < em_code.3X > em_code.3'
-sh -c 'if test -s em_code.3 ; then : ; else cp em_code.3X em_code.3 ; fi '
libeme.$(LIBSUF): em_private.h $(SRC) $(OBS)
EMHOME=$(EMHOME); cc="$(CC)"; suf="$(SUF)"; libsuf="$(LIBSUF)"; cflags="-c -DREADABLE_EM $(CFLAGS)"; ar="$(AR)"; export EMHOME cc ar suf libsuf cflags; sh make.sh e $(SRC)
-sh -c 'ranlib libeme.$(LIBSUF)'
libemk.$(LIBSUF): em_private.h $(SRC) $(OBS)
EMHOME=$(EMHOME); cc="$(CC)"; suf="$(SUF)"; libsuf="$(LIBSUF)"; cflags="-c $(CFLAGS)"; ar="$(AR)"; export EMHOME cc ar suf libsuf cflags; sh make.sh k $(SRC)
-sh -c 'ranlib libemk.$(LIBSUF)'
em_codeEK.h: make.em.gen $(ETC)/em_table em.nogen
make.em.gen $(ETC)/em_table > em_codeEK.h
cat em.nogen >> em_codeEK.h
pr:
@pr Makefile em.nogen make.em.gen make.sh insert.h $(SRC) em_private.h
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF) em_code.3 em_codeEK.h
lintlib: make.sh
lint -I. -I../../h -I../../../h -Ceme -DREADABLE_EM $(SRC)
lint -I. -I../../h -I../../../h -Cemk $(SRC)
mv llib-leme.ln llib-lemk.ln $(EMHOME)/modules/lib
insert.$(SUF): insert.c insert.h
$(CC) $(CFLAGS) -c insert.c

View File

@@ -1,15 +0,0 @@
#include "em_private.h"
/* $Header$ */
CC_crfcon(op, v, s)
char *v;
arith s;
{
/* CON or ROM with argument FCON(v,z)
*/
PS(op);
WCON(sp_fcon, v, s);
CEND();
NL();
}

View File

@@ -1,15 +0,0 @@
#include "em_private.h"
/* $Header$ */
CC_cricon(op, v, s)
char *v;
arith s;
{
/* CON or ROM with argument ICON(v,z)
*/
PS(op);
WCON(sp_icon, v, s);
CEND();
NL();
}

View File

@@ -1,15 +0,0 @@
#include "em_private.h"
/* $Header$ */
CC_crucon(op, v, s)
char *v;
arith s;
{
/* CON or ROM with argument UCON(v,z)
*/
PS(op);
WCON(sp_ucon, v, s);
CEND();
NL();
}

View File

@@ -1,52 +0,0 @@
TMP=tmp$$
cat $* >$TMP
ed - $TMP <<'--EOI--'
g/^%/d
g/^$/d
g/^ /.-1,.j
1,$s/[ ]*|[ ]*/|/g
g/NOTIMPLEMENTED/d
1,$s/\([^|]*\)|\([^|]*\)|\(.*\)$/\
NAME \1\
HEAD \1\
PLST \2\
DECL \2\
BODY \3/
$a
END
.
g/^NAME/m$
g/^PLST/s/[ ][ ]*\([^:]*\):\([^ ]*\)/,\2/g
g/^PLST,/s//PLST /
g/^PLST /s/^PLST \(.*\)$/(\1)/
g/^HEAD/.,.+1j
g/^HEAD /s/^HEAD \([^(]*\)\(.*\)$/cat >\1.c <<'--EOF--'\
#include "em_private.h"\
\
\1\2/
g/^DECL/s/[ ][ ]*\([^:]*\):\([^ ]*\)/\
\1 \2;/g
g/^DECL/d
g/^BODY/s/^BODY \(.*\)$/{\
\1;\
}\
--EOF--/
1,/^END/-1p
1,/^END/d
g:^NAME:s:^NAME \(.*\)$:cc -c -O -I$1 -I$EMHOME/modules/h -I$EMHOME/h \1.c:
1i
cat >make.sh <<'--EOF--'
: script for making lib
rm -f C_*.o
.
$a
rm -f libem$1.a
cc -c -O -I. -I$1 -I$EMHOME/modules/h -I$EMHOME/h $1/em.c
mv em.o em$1.o
ar rc libem$1.a C_*.o em$1.o insert.o failed.o internerr.o getid.o
rm -f C_*.o
--EOF--
.
1,$p
--EOI--
rm -f $TMP

View File

@@ -1,15 +0,0 @@
/* $Header$ */
/*
* (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
#include <em.h>
#include <em_mes.h>
C_ms_lin(l)
int l;
{
C_mes_begin(ms_lin);
C_cst((arith) l);
C_mes_end();
}

View File

@@ -1,65 +0,0 @@
EMHOME = ../../..
HDIR = $(EMHOME)/modules/h
INSTALL = $(EMHOME)/modules/install
COMPARE = $(EMHOME)/modules/compare
INCLUDES=-I$(EMHOME)/h -I$(HDIR)
CFLAGS = $(INCLUDES) -O $(COPT)
AR = ar
SUF = o
LIBSUF = a
SRC = C_ms_err.c C_ms_opt.c C_ms_emx.c C_ms_reg.c C_ms_src.c\
C_ms_flt.c C_ms_com.c C_ms_par.c C_ms_ego.c C_ms_gto.c\
C_ms_stb.c C_ms_std.c
OBJ = C_ms_err.$(SUF) C_ms_opt.$(SUF) C_ms_emx.$(SUF) C_ms_reg.$(SUF) C_ms_src.$(SUF)\
C_ms_flt.$(SUF) C_ms_com.$(SUF) C_ms_par.$(SUF) C_ms_ego.$(SUF) C_ms_gto.$(SUF)\
C_ms_stb.$(SUF) C_ms_std.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: libem_mes.$(LIBSUF) libem_mesCE.$(LIBSUF) libem_mesO.$(LIBSUF)
libem_mes.$(LIBSUF): $(OBJ)
rm -f libem_mes.$(LIBSUF)
$(AR) cr libem_mes.$(LIBSUF) $(OBJ)
-sh -c 'ranlib libem_mes.$(LIBSUF)'
libem_mesO.$(LIBSUF):
rm -f *.$(SUF) libem_mesO.$(LIBSUF)
$(CC) -c $(CFLAGS) -DPEEPHOLE $(SRC)
$(AR) cr libem_mesO.$(LIBSUF) $(OBJ)
-sh -c 'ranlib libem_mesO.$(LIBSUF)'
rm -f *.$(SUF)
libem_mesCE.$(LIBSUF):
rm -f *.$(SUF) libem_mesCE.$(LIBSUF)
$(CC) -c $(CFLAGS) -DCODE_EXPANDER $(SRC)
$(AR) cr libem_mesCE.$(LIBSUF) $(OBJ)
-sh -c 'ranlib libem_mesCE.$(LIBSUF)'
rm -f *.$(SUF)
install: all
$(INSTALL) lib/libem_mes.$(LIBSUF)
$(INSTALL) lib/libem_mesO.$(LIBSUF)
$(INSTALL) lib/libem_mesCE.$(LIBSUF)
$(INSTALL) man/em_mes.3
cmp: all
-$(COMPARE) lib/libem_mes.$(LIBSUF)
-$(COMPARE) lib/libem_mesO.$(LIBSUF)
-$(COMPARE) lib/libem_mesCE.$(LIBSUF)
-$(COMPARE) man/em_mes.3
pr:
@pr Makefile $(SRC)
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF)
lintlib:
lint $(INCLUDES) -Cem_mes $(SRC)
mv llib-lem_mes.ln $(EMHOME)/modules/lib

View File

@@ -1,180 +0,0 @@
# $Header$
EMHOME = ../../..
INSTALL = $(EMHOME)/modules/install
COMPARE = $(EMHOME)/modules/compare
LINT = lint
BINDIR = $(EMHOME)/lib
# set HOWMUCH to head -20 to limit number of patterns used
#HOWMUCH = head -20
HOWMUCH = cat
LEXLIB = -ll
INCLDIR = -I$(EMHOME)/h -I$(EMHOME)/modules/h -I$(EMHOME)/modules/pkg
PREFLAGS = $(INCLDIR) -DPRIVATE=static# -DDEBUG
# Enable the next line to produce a version that output's the line number
# from the patterns file each time an optimization is performed.
#PREFLAGS = $(PREFLAGS) -DSTATS
PROFFLAG = -O
CFLAGS = $(PREFLAGS) $(PROFFLAG) $(COPT)
LINTFLAGS = $(PREFLAGS) -DNORCSID
LLOPT =
CMD = '$(CC) -c $(CFLAGS)'
AR = ar
SUF = o
LIBSUF = a
LIBOPT = libemopt.$(LIBSUF)
LIBCEOPT = libCEopt.$(LIBSUF)
.SUFFIXES: .d .r
.r.d: ; CMD=$(CMD); export CMD; awk -f makefuns.awk $*.r | sh -x
touch $@
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
CSRC = main.c nopt.c mkstrct.c aux.c outputdfa.c outcalls.c\
findworst.c initlex.c
SRCS = Makefile nopt.h parser.h parser.g syntax.l pseudo.r\
patterns $(CSRC)
NOFILES = nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
POFILES = parser.$(SUF) syntax.$(SUF) outputdfa.$(SUF) outcalls.$(SUF) findworst.$(SUF)\
initlex.$(SUF) Lpars.$(SUF)
GENFILES = Lpars.h Lpars.c parserdummy parser.c syntax.c \
dfa.c dfa.c.new trans.c trans.c.new\
incalls.d incalls.r incalls.r.new pseudo.d
all: em_nopt $(LIBOPT) $(LIBCEOPT) em_opt.3
install: all
$(INSTALL) lib/$(LIBOPT)
$(INSTALL) lib/$(LIBCEOPT)
$(INSTALL) man/em_opt.3
cp em_nopt.6 $(EMHOME)/man
cp em_nopt $(BINDIR)/em_nopt
cmp: all
-$(COMPARE) lib/$(LIBOPT)
-$(COMPARE) lib/$(LIBCEOPT)
-$(COMPARE) man/em_opt.3
-cmp em_nopt $(BINDIR)/em_nopt
pr:
@pr $(SRCS)
opr:
make pr | opr
lint: lintparser lintnopt
clean:
rm -f O_*.$(SUF)
rm -f O_*.c
rm -f $(NOFILES) main.$(SUF) $(POFILES)
rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
# How to build stand alone version of the optimizer
NOPTLIB = $(EMHOME)/modules/lib/libread_emk.$(LIBSUF)\
$(EMHOME)/modules/lib/libemk.$(LIBSUF)\
$(EMHOME)/modules/lib/liballoc.$(LIBSUF)\
$(EMHOME)/modules/lib/malloc.$(SUF)\
$(EMHOME)/modules/lib/libprint.$(LIBSUF)\
$(EMHOME)/modules/lib/libstring.$(LIBSUF)\
$(EMHOME)/modules/lib/libsystem.$(LIBSUF)\
$(EMHOME)/lib/em_data.$(LIBSUF)
em_nopt: incalls.r main.$(SUF) $(NOFILES)
$(CC) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
OLINT = main.c mkstrct.c nopt.c aux.c dfa.c trans.c
OLINTLIB = $(EMHOME)/modules/lib/llib-lread_emkV.ln\
$(EMHOME)/modules/lib/llib-lemk.ln\
$(EMHOME)/modules/lib/llib-lsystem.ln\
$(EMHOME)/modules/lib/llib-lalloc.ln\
$(EMHOME)/modules/lib/llib-lprint.ln\
$(EMHOME)/modules/lib/llib-lstring.ln
lintnopt: incalls.r $(OLINT)
$(LINT) $(LINTFLAGS) $(OLINT) $(OLINTLIB)
# How to build the library version of the optimizer
$(LIBOPT): $(NOFILES) pseudo.d incalls.d
rm -f $(LIBOPT)
ar rc $(LIBOPT) O_*.$(SUF) $(NOFILES)
-sh -c 'ranlib $(LIBOPT)'
$(LIBCEOPT): incalls.r
rm -f O_*.$(SUF) $(NOFILES) pseudo.d incalls.d
-mv $(LIBOPT) $(LIBOPT).saved
make "EMHOME="$(EMHOME) PREFLAGS='$(INCLDIR) -DPRIVATE=static -DCODE_EXPANDER' $(LIBOPT)
mv $(LIBOPT) $(LIBCEOPT)
-mv $(LIBOPT).saved $(LIBOPT)
rm -f O_*.$(SUF) $(NOFILES)
incalls.r: patterns parser
-$(EMHOME)/lib/cpp patterns | $(HOWMUCH) >/tmp/patts
parser </tmp/patts
-rm /tmp/patts
# How to build the lint library for the optimizer
LLINT = nopt.c mkstrct.c aux.c dfa.c trans.c
lintlib: incalls.r $(LLINT)
$(LINT) $(LINTFLAGS) $(LLINT) -Cemopt
mv llib-lemopt.ln $(EMHOME)/modules/lib
# How to build program to parse patterns table and build c files.
PARSERLIB = $(EMHOME)/lib/em_data.$(LIBSUF)\
$(EMHOME)/modules/lib/liballoc.$(LIBSUF)\
$(EMHOME)/modules/lib/libstring.$(LIBSUF)\
$(EMHOME)/modules/lib/libsystem.$(LIBSUF)
parser: parserdummy $(POFILES) $(PARSERLIB)
$(CC) -o parser $(LDFLAGS) $(POFILES) $(PARSERLIB) $(LEXLIB)
parserdummy: parser.g
LLgen $(LLOPT) parser.g
touch parserdummy
PLINT = parser.c syntax.c outputdfa.c outcalls.c\
findworst.c initlex.c Lpars.c
PLINTLIB = $(EMHOME)/modules/lib/llib-lalloc.ln\
$(EMHOME)/modules/lib/llib-lstring.ln\
$(EMHOME)/modules/lib/llib-lsystem.ln
lintparser: parserdummy $(PLINT)
$(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
# Dependancies
main.$(SUF): nopt.h
nopt.$(SUF): nopt.h
mkstrct.$(SUF): nopt.h
aux.$(SUF): nopt.h
pseudo.d: nopt.h makefuns.awk
dfa.$(SUF): nopt.h
trans.$(SUF): nopt.h
incalls.d: nopt.h makefuns.awk
parser.$(SUF): Lpars.h parser.h
Lpars.$(SUF): Lpars.h
syntax.$(SUF): syntax.l parser.h Lpars.h
outputdfa.$(SUF): parser.h Lpars.h
outcalls.$(SUF): parser.h
findworst.$(SUF): parser.h
initlex.$(SUF): parser.h

View File

@@ -1,434 +0,0 @@
.TL
A Tour of the Peephole Optimizer Library
.AU
B. J. McKenzie
.NH
Introduction
.LP
The peephole optimizer consists of three major parts:
.IP a)
the table describing the optimization to be performed
.IP b)
a program to parse these tables and build input and output routines to
interface to the library and a dfa based routine to recognize patterns and
make the requested replacements.
.IP c)
common routines for the library that are independent of the table of a)
.LP
The library conforms to the
.I EM_CODE(3)
module interface with entry points with names like
.I C_xxx.
The library module results in calls to a module with an identical interface
but with calls to routines with names of the form
.I O_xxx.
.LP
We shall now describe each of these in turn in some detail.
.NH
The optimization table
.LP
The file
.I patterns
contains the patterns of EM instructions to be recognized by the optimizer
and the EM instructions to replace them. Each pattern may have an
optional restriction that must be satisfied before the replacement is made.
The syntax of the table will be described using extended BNF notation
used by
.I LLGen
where:
.DS
.I
[...] - are used to group items
| - is used to separate alternatives
; - terminates a rule
? - indicates item is optional
* - indicates item is repeated zero or more times
+ - indicates item is repeated one or more times
.R
.DE
The format of each rule in the table is:
.DS
.I
rule : pattern global_restriction? ':' replacement
;
.R
.DE
Each rule must be on a single line except that it may be broken after the
colon if the next line begins with a tab character.
The pattern has the syntax:
.DS
.I
pattern : [ EM_mnem [ local_restriction ]? ]+
;
EM-mnem : "An EM instruction mnemonic"
| 'lab'
;
.R
.DE
and consists of a sequence of one or more EM instructions or
.I lab
which stands for a defined instruction label. Each EM-mnem may optionally be
followed by a local restriction on the argument of the mnemonic and take
one of the following forms depending on the type of the EM instruction it
follows:
.DS
.I
local_restriction : normal_restriction
| opt_arg_restriction
| ext_arg_restriction
;
.R
.DE
A normal restriction is used after all types of EM instruction except for
those that allow an optional argument, (such as
.I adi
) or those involving external names, (such as
.I lae
)
and takes the form:
.DS
.I
normal_restriction : [ rel_op ]? expression
;
rel_op : '=='
| '!='
| '<='
| '<'
| '>='
| '>'
;
.R
.DE
If the rel_op is missing, the equality
.I ==
operator is assumed. The general form of expression is defined later but
basically it involves simple constants, references to EM_mnem arguments
that appear earlier in the pattern and expressions similar to those used
in C expressions.
The form of the restriction after those EM instructions like
.I adi
whose arguments are optional takes the form:
.DS
.I
opt_arg_restriction : normal_restriction
| 'defined'
| 'undefined'
;
.R
.DE
The
.I defined
and
.I undefined
indicate that the argument is present
or absent respectively. The normal restriction form implies that the
argument is present and satisfies the restriction.
The form of the restriction after those EM instructions like
.I lae
whose arguments refer to external object take the form:
.DS
.I
ext_arg_restriction : patarg offset_part?
;
offset_part : [ '+' | '-' ] expression
;
.R
.DE
Such an argument has one of three forms: a offset with no name, an
offset form a name or an offset from a label. With no offset part
the restriction requires the argument to be identical to a previous
external argument. With an offset part it requires an identical name
part, (either empty, same name or same label) and supplies a relationship
among the offset parts. It is possible to refer to test for the same
external argument, the same name or to obtain the offset part of an external
argument using the
.I sameext
,
.I samenam
and
.I offset
functions given below.
.LP
The general form of an expression is:
.DS
.I
expression : expression binop expression
| unaryop expression
| '(' expression ')'
| bin_function '(' expression ',' expression ')'
| ext_function '(' patarg ',' patarg ')'
| 'offset' '(' patarg ')'
| patarg
| 'p'
| 'w'
| INTEGER
;
.R
.DE
.DS
.I
bin_function : 'sfit'
| 'ufit'
| 'samesign'
| 'rotate'
;
.R
.DE
.DS
.I
ext_function : 'samenam'
| 'sameext'
;
patarg : '$' INTEGER
;
binop : "As for C language"
unaryop : "As for C language"
.R
.DE
The INTEGER in the
.I patarg
refers to the first, second, etc. argument in the pattern and it is
required to refer to a pattern that appears earlier in the pattern
The
.I w
and
.I p
refer to the word size and pointer size (in bytes) respectively. The
various function test for:
.IP sfit 10
the first argument fits as a signed value of
the number of bit specified by the second argument.
.IP ufit 10
as for sfit but for unsigned values.
.IP samesign 10
the first argument has the same sign as the second.
.IP rotate 10
the value of the first argument rotated by the number of bit specified
by the second argument.
.IP samenam 10
both arguments refer to externals and have either no name, the same name
or same label.
.IP sameext 10
both arguments refer to the same external.
.IP offset 10
the argument is an external and this yields it offset part.
.LP
The global restriction takes the form:
.DS
.I
global_restriction : '?' expression
;
.R
.DE
and is used to express restrictions that cannot be expressed as simple
restrictions on a single argument or are can be expressed in a more
readable fashion as a global restriction. An example of such a rule is:
.DS
.I
dup w ldl stf ? p==2*w : ldl $2 stf $3 ldl $2 lof $3
.R
.DE
which says that this rule only applies if the pointer size is twice the
word size.
.NH
Incompatibilities with Previous Optimizer
.LP
The current table format is not compatible with previous versions of the
peephole optimizer tables. In particular the previous table had no provision
for local restrictions and only the equivalent of the global restriction.
This meant that our
.I '?'
character that announces the presence of the optional global restriction was
not required. The previous optimizer performed a number of other tasks that
were unrelated to optimization that were possible because the old optimizer
read the EM code for a complete procedure at a time. This included task such
as register variable reference counting and moving the information regarding
the number of bytes of local storage required by a procedure from it
.I end
pseudo instruction to it's
.I pro
pseudo instruction. These tasks are no longer done. If there are required
then the must be performed by some other program in the pipeline.
.NH
The Parser
.LP
The program to parse the tables and build the pattern table dependent dfa
routines is built from the files:
.IP parser.h 15
header file
.IP parser.g 15
LLGen source file defining syntax of table
.IP syntax.l 15
Lex sources file defining form of tokens in table.
.IP initlex.c 15
Uses the data in the library
.I em_data.a
to initialize the lexical analyser to recognize EM instruction mnemonics.
.IP outputdfa.c 15
Routines to output dfa when it has been constructed.
.IP outcalls.c 15
Routines to output the file
.I incalls.c
defined in section 4.
.IP findworst.c 15
Routines to analyze patterns to find how to continue matching after a
successful replacement or failed match.
.LP
The parser checks that the tables conform to the syntax outlined in the
previous section and also mades a number of semantic checks on their
validity. Further versions could make further checks such as looking for
cycles in the rules or checking that each replacement leaves the same
number of bytes on the stack as the pattern it replaces. The parser
builds an internal dfa representation of the rules by combining rules with
common prefixes. All local and global restrictions are combined into a single
test to be performed are a complete pattern has been detected in the input.
The idea is to build a structure so that each of the patterns can be matched
and then the corresponding tests made and the first that succeeds is replaced.
If two rules have the same pattern and both their tests also succeed the one
that appears first in the tables file will be done. Somewhat less obvious
is that id one pattern is a proper prefix of a longer pattern and its test
succeeds then the second pattern will not be checked for.
A major task of the parser if to decide on the action to take when a rule has
been partially matched or when a pattern has been completely matched but its
test does not succeed. This requires a search of all patterns to see if any
part of the part matched could be part of some other pattern. for example
given the two patterns:
.DS
.I
loc adi w loc adi w : loc $1+$3 adi w
loc adi w loc sbi w : loc $1-$3 adi w
.R
.DE
If the first pattern fails after seeing the input:
.DS
.I
loc adi loc
.R
.DE
the parser will still need to check whether the second pattern matches.
This requires a decision on how to fix up any internal data structures in
the dfa matcher, such as moving some instructions from the pattern to the
output queue and moving the pattern along and then deciding what state
it should continue from. Similar decisions are requires after a pattern
has been replaced. For example if the replacement is empty it is necessary
to backup
.I n-1
instructions where
.I n
is the length of the longest pattern in the tables.
.NH
Structure of the Resulting Library
.LP
The major data structures maintained by the library consist of three queues;
an
.I output
queue of instructions awaiting output, a
.I pattern
queue containing instructions that match the current prefix, and a
.I backup
queue of instructions that have been backed up over and need to be reparsed
for further pattern matches.
.LP
If no errors are detected by the parser in the tables it output the following
files:
.IP dfa.c 10
this consists of a large switch statement that maintains the current state of
the dfa and makes a transition to the next state if the next input instruction
matches.
.IP incalls.r 10
this contains an entry for every EM instruction (plus
.I lab
) giving information on how to build a routine with the name
.I C_xxx
that conforms to the
.I EM_CODE(3)
modules interface. If the EM instruction does not appear in the tables
patterns at all then the dfa routine is called to flush any current queued
output and the the output
.I O_xxx
routine is called. If the EM instruction does appear in a pattern then the instruction is added onto the end of the pattern queue and the dfa routines called
to attempted to make a transition. This file is input to the
.I awk
program
.I makefuns.awk
to produce individual C files with names like
.I C_xxx.c
each containing a single function definition. This enables the loader to
only load those routines that are actually needed when the library is loaded.
.IP trans.c 10
this contains a routine that is called after each transition to a state that
contains restrictions and replacements. The restrictions a converted to
C expressions and the replacements coded as calls to output instructions
into the output queue.
.LP
The following files contain code that is independent of the pattern tables:
.IP nopt.c 10
general routines to initialize, and maintain the data structures.
.IP aux.c 10
routines to implement the functions used in the rules.
.IP mkcalls.c 10
code to convert the internal data structures to calls on the output
.I O_xxx
routines when the output queue is flushed.
.NH
Miscellaneous Issues
.LP
The size of the output and backup queues are fixed in size according to the
values of
.I MAXOUTPUT
and
.I MAXBACKUP
defined in the file
.I nopt.h.
The size of the pattern queue is set to the length of the maximum pattern
length by the tables output by the parser. The queues are implemented as
arrays of pointers to structures containing the instruction and its arguments.
The space for the structures are initially obtained by calls to
.I Malloc
(from the
.I alloc(3)
module),
and freed when the output queue or patterns queue is cleared. These freed
structures are collected on a free list and reused to avoid the overheads
of repeated calls to
.I malloc
and
.I free.
.LP
The fixed size of the output and pattern queues causes no difficulty in
practice and can only result in some potential optimizations being missed.
When the output queue fills it is simply prematurely flushed and backups
when the backup queue is fill are simply ignored. A possible improvement
would be to flush only part of the output queue when it fills. It should
be noted that it is not possible to statically determine the maximum possible
size for these queues as they need to be unbounded in the worst case. A
study of the rule
.DS
.I
inc dec :
.R
.DE
with the input consisting of
.I N
.I inc
and then
.I N
.I dec
instructions requires an output queue length of
.I N-1
to find all possible replacements.

View File

@@ -1,303 +0,0 @@
#ifndef NORCSID
static char rcsid[] = "$Header$";
#endif
#include "nopt.h"
static Linenumber = 0; /* Local optimization of lin to lni if possible */
OO_mkcalls(p)
struct instr *p;
{
switch(p->opcode) {
case op_aar:
O_aar(p->acst); break;
case op_adf:
O_adf(p->acst); break;
case op_adi:
O_adi(p->acst); break;
case op_adp:
O_adp(p->acst); break;
case op_ads:
O_ads(p->acst); break;
case op_adu:
O_adu(p->acst); break;
case op_and:
O_and(p->acst); break;
case op_asp:
O_asp(p->acst); break;
case op_ass:
O_ass(p->acst); break;
case op_beq:
O_beq((label)p->acst); break;
case op_bge:
O_bge((label)p->acst); break;
case op_bgt:
O_bgt((label)p->acst); break;
case op_ble:
O_ble((label)p->acst); break;
case op_blm:
O_blm(p->acst); break;
case op_bls:
O_bls(p->acst); break;
case op_blt:
O_blt((label)p->acst); break;
case op_bne:
O_bne((label)p->acst); break;
case op_bra:
O_bra((label)p->acst); break;
case op_cai:
O_cai(); break;
case op_cal:
O_cal(p->apnam); break;
case op_cff:
O_cff(); break;
case op_cfi:
O_cfi(); break;
case op_cfu:
O_cfu(); break;
case op_cif:
O_cif(); break;
case op_cii:
O_cii(); break;
case op_ciu:
O_ciu(); break;
case op_cmf:
O_cmf(p->acst); break;
case op_cmi:
O_cmi(p->acst); break;
case op_cmp:
O_cmp(); break;
case op_cms:
O_cms(p->acst); break;
case op_cmu:
O_cmu(p->acst); break;
case op_com:
O_com(p->acst); break;
case op_csa:
O_csa(p->acst); break;
case op_csb:
O_csb(p->acst); break;
case op_cuf:
O_cuf(); break;
case op_cui:
O_cui(); break;
case op_cuu:
O_cuu(); break;
case op_dch:
O_dch(); break;
case op_dec:
O_dec(); break;
case op_dee:
if(p->argtype==nof_ptyp) O_dee_dlb(p->adlb, p->anoff);
else O_dee_dnam(p->adnam, p->asoff); break;
case op_del:
O_del(p->acst); break;
case op_dup:
O_dup(p->acst); break;
case op_dus:
O_dus(p->acst); break;
case op_dvf:
O_dvf(p->acst); break;
case op_dvi:
O_dvi(p->acst); break;
case op_dvu:
O_dvu(p->acst); break;
case op_exg:
O_exg(p->acst); break;
case op_fef:
O_fef(p->acst); break;
case op_fif:
O_fif(p->acst); break;
case op_fil:
Linenumber = 0;
if(p->argtype==nof_ptyp) O_fil_dlb(p->adlb, p->anoff);
else O_fil_dnam(p->adnam, p->asoff); break;
case op_gto:
if(p->argtype==nof_ptyp) O_gto_dlb(p->adlb, p->anoff);
else O_gto_dnam(p->adnam, p->asoff); break;
case op_inc:
O_inc(); break;
case op_ine:
if(p->argtype==nof_ptyp) O_ine_dlb(p->adlb, p->anoff);
else O_ine_dnam(p->adnam, p->asoff); break;
case op_inl:
O_inl(p->acst); break;
case op_inn:
O_inn(p->acst); break;
case op_ior:
O_ior(p->acst); break;
case op_lab:
Linenumber = 0;
O_df_ilb(p->alab); break;
case op_lae:
if(p->argtype==nof_ptyp) O_lae_dlb(p->adlb, p->anoff);
else O_lae_dnam(p->adnam, p->asoff); break;
case op_lal:
O_lal(p->acst); break;
case op_lar:
O_lar(p->acst); break;
case op_ldc:
O_ldc(p->acst); break;
case op_lde:
if(p->argtype==nof_ptyp) O_lde_dlb(p->adlb, p->anoff);
else O_lde_dnam(p->adnam, p->asoff); break;
case op_ldf:
O_ldf(p->acst); break;
case op_ldl:
O_ldl(p->acst); break;
case op_lfr:
O_lfr(p->acst); break;
case op_lil:
O_lil(p->acst); break;
case op_lim:
O_lim(); break;
case op_lin:
if(Linenumber && p->acst == ++Linenumber) {
O_lni();
}
else {
O_lin(p->acst);
Linenumber = p->acst;
}
break;
case op_lni:
O_lni();
Linenumber++;
break;
case op_loc:
O_loc(p->acst); break;
case op_loe:
if(p->argtype==nof_ptyp) O_loe_dlb(p->adlb, p->anoff);
else O_loe_dnam(p->adnam, p->asoff); break;
case op_lof:
O_lof(p->acst); break;
case op_loi:
O_loi(p->acst); break;
case op_lol:
O_lol(p->acst); break;
case op_lor:
O_lor(p->acst); break;
case op_los:
O_los(p->acst); break;
case op_lpb:
O_lpb(); break;
case op_lpi:
O_lpi(p->apnam); break;
case op_lxa:
O_lxa(p->acst); break;
case op_lxl:
O_lxl(p->acst); break;
case op_mlf:
O_mlf(p->acst); break;
case op_mli:
O_mli(p->acst); break;
case op_mlu:
O_mlu(p->acst); break;
case op_mon:
O_mon(); break;
case op_ngf:
O_ngf(p->acst); break;
case op_ngi:
O_ngi(p->acst); break;
case op_nop:
O_nop(); break;
case op_rck:
O_rck(p->acst); break;
case op_ret:
O_ret(p->acst); break;
case op_rmi:
O_rmi(p->acst); break;
case op_rmu:
O_rmu(p->acst); break;
case op_rol:
O_rol(p->acst); break;
case op_ror:
O_ror(p->acst); break;
case op_rtt:
O_rtt(); break;
case op_sar:
O_sar(p->acst); break;
case op_sbf:
O_sbf(p->acst); break;
case op_sbi:
O_sbi(p->acst); break;
case op_sbs:
O_sbs(p->acst); break;
case op_sbu:
O_sbu(p->acst); break;
case op_sde:
if(p->argtype==nof_ptyp) O_sde_dlb(p->adlb, p->anoff);
else O_sde_dnam(p->adnam, p->asoff); break;
case op_sdf:
O_sdf(p->acst); break;
case op_sdl:
O_sdl(p->acst); break;
case op_set:
O_set(p->acst); break;
case op_sig:
O_sig(); break;
case op_sil:
O_sil(p->acst); break;
case op_sim:
O_sim(); break;
case op_sli:
O_sli(p->acst); break;
case op_slu:
O_slu(p->acst); break;
case op_sri:
O_sri(p->acst); break;
case op_sru:
O_sru(p->acst); break;
case op_ste:
if(p->argtype==nof_ptyp) O_ste_dlb(p->adlb, p->anoff);
else O_ste_dnam(p->adnam, p->asoff); break;
case op_stf:
O_stf(p->acst); break;
case op_sti:
O_sti(p->acst); break;
case op_stl:
O_stl(p->acst); break;
case op_str:
O_str(p->acst); break;
case op_sts:
O_sts(p->acst); break;
case op_teq:
O_teq(); break;
case op_tge:
O_tge(); break;
case op_tgt:
O_tgt(); break;
case op_tle:
O_tle(); break;
case op_tlt:
O_tlt(); break;
case op_tne:
O_tne(); break;
case op_trp:
O_trp(); break;
case op_xor:
O_xor(p->acst); break;
case op_zeq:
O_zeq((label)p->acst); break;
case op_zer:
O_zer(p->acst); break;
case op_zge:
O_zge((label)p->acst); break;
case op_zgt:
O_zgt((label)p->acst); break;
case op_zle:
O_zle((label)p->acst); break;
case op_zlt:
O_zlt((label)p->acst); break;
case op_zne:
O_zne((label)p->acst); break;
case op_zre:
if(p->argtype==nof_ptyp) O_zre_dlb(p->adlb, p->anoff);
else O_zre_dnam(p->adnam, p->asoff); break;
case op_zrf:
O_zrf(p->acst); break;
case op_zrl:
O_zrl(p->acst); break;
}
}

View File

@@ -1,75 +0,0 @@
# $Header$
EMHOME = ../../..
MODDIR=$(EMHOME)/modules
INSTALL = $(MODDIR)/install
COMPARE = $(MODDIR)/compare
INCLUDES = -I. -I$(MODDIR)/h
CFLAGS = -O $(INCLUDES) $(COPT)
AR = ar
SUF = o
LIBSUF = a
LIBFLT = libflt.$(LIBSUF)
SRC = flt_ar2flt.c flt_div.c flt_flt2ar.c flt_modf.c flt_str2fl.c \
flt_cmp.c flt_add.c b64_add.c flt_mul.c flt_nrm.c b64_sft.c \
flt_umin.c flt_chk.c split.c ucmp.c
OBJ = flt_ar2flt.$(SUF) flt_div.$(SUF) flt_flt2ar.$(SUF) flt_modf.$(SUF) \
flt_str2fl.$(SUF) flt_cmp.$(SUF) flt_add.$(SUF) b64_add.$(SUF) \
flt_mul.$(SUF) flt_nrm.$(SUF) b64_sft.$(SUF) flt_umin.$(SUF) \
flt_chk.$(SUF) split.$(SUF) ucmp.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: $(LIBFLT)
test: $(LIBFLT) test.o
$(CC) -o tst test.o $(LIBFLT)
./tst
$(LIBFLT): $(OBJ)
rm -f $(LIBFLT)
$(AR) r $(LIBFLT) $(OBJ)
-sh -c 'ranlib $(LIBFLT)'
install: all
$(INSTALL) lib/$(LIBFLT)
$(INSTALL) h/flt_arith.h
$(INSTALL) man/flt_arith.3
cmp: all
-$(COMPARE) lib/$(LIBFLT)
-$(COMPARE) h/flt_arith.h
-$(COMPARE) man/flt_arith.3
pr:
@pr Makefile $(SRC)
opr:
make pr | opr
clean:
rm -f *.$(SUF) $(LIBFLT)
lintlib:
lint $(INCLUDES) -Cflt $(SRC)
mv llib-lflt.ln $(MODDIR)/lib
b64_add.$(SUF): flt_misc.h flt_arith.h
flt_ar2flt.$(SUF): flt_misc.h flt_arith.h
flt_div.$(SUF): flt_misc.h flt_arith.h
flt_nrm.$(SUF): flt_misc.h flt_arith.h
b64_sft.$(SUF): flt_misc.h flt_arith.h
flt_chk.$(SUF): flt_misc.h flt_arith.h
flt_flt2ar.$(SUF): flt_misc.h flt_arith.h
flt_str2fl.$(SUF): flt_misc.h flt_arith.h
flt_add.$(SUF): flt_misc.h flt_arith.h
flt_cmp.$(SUF): flt_misc.h flt_arith.h
flt_mul.$(SUF): flt_misc.h flt_arith.h
flt_modf.$(SUF): flt_misc.h flt_arith.h
flt_umin.$(SUF): flt_misc.h
ucmp.$(SUF): flt_misc.h flt_arith.h
split.$(SUF): flt_misc.h flt_arith.h

View File

@@ -1,22 +0,0 @@
/*
* (c) copyright 1989 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
/* $Header$ */
#include <flt_arith.h>
/* some short-hands ... */
#define m1 flt_mantissa.flt_h_32
#define m2 flt_mantissa.flt_l_32
/* some constants */
#define EXT_MAX 16384 /* max exponent */
#define EXT_MIN (-16384) /* min exponent */
/* hiding of names: */
#define ucmp flt__ucmp
#define flt_nrm flt__nrm
#define flt_chk flt__chk
#define flt_b64_add flt__64add
#define flt_split flt__split

View File

@@ -1,23 +0,0 @@
EMHOME = ../../..
INSTALL = $(EMHOME)/modules/install
COMPARE = $(EMHOME)/modules/compare
all:
install: all
$(INSTALL) pkg/idf_pkg.body
$(INSTALL) pkg/idf_pkg.spec
$(INSTALL) man/idf.3
cmp: all
-$(COMPARE) pkg/idf_pkg.body
-$(COMPARE) pkg/idf_pkg.spec
-$(COMPARE) man/idf.3
pr:
@pr Makefile idf_pkg.spec idf_pkg.body
opr:
make pr | opr
clean:

View File

@@ -1,46 +0,0 @@
EMHOME = ../../..
MODULES = $(EMHOME)/modules
INSTALL = $(MODULES)/install
COMPARE = $(MODULES)/compare
CFLAGS = -O $(COPT)
AR = ar
SUF = o
LIBSUF = a
OBJECTS = AtEoIF.$(SUF)\
AtEoIT.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: libinput.$(LIBSUF)
libinput.$(LIBSUF): $(OBJECTS)
$(AR) cr libinput.$(LIBSUF) $(OBJECTS)
-sh -c 'ranlib libinput.$(LIBSUF)'
install: all
$(INSTALL) lib/libinput.$(LIBSUF)
$(INSTALL) man/input.3
$(INSTALL) pkg/inp_pkg.body
$(INSTALL) pkg/inp_pkg.spec
cmp: all
-$(COMPARE) lib/libinput.$(LIBSUF)
-$(COMPARE) man/input.3
-$(COMPARE) pkg/inp_pkg.body
-$(COMPARE) pkg/inp_pkg.spec
pr:
@pr Makefile inp_pkg.spec inp_pkg.body AtEoIF.c AtEoIT.c
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF)
lintlib:
lint -Cinput AtEoIF.c AtEoIT.c
mv llib-linput.ln $(MODULES)/lib

View File

@@ -1,44 +0,0 @@
EMHOME = ../../..
INSTALL = $(EMHOME)/modules/install
COMPARE = $(EMHOME)/modules/compare
CFLAGS = -O -I$(EMHOME)/modules/h $(COPT)
SUF = o
RCC = cc #$ must produce a runnable object
MALLOCSRC = READ_ME size_type.h gensize_type.h param.h impl.h check.h log.h phys.h \
mal.c log.c phys.c check.c
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: malloc.$(SUF)
install: all
$(INSTALL) lib/malloc.$(SUF)
cmp: all
-$(COMPARE) lib/malloc.$(SUF)
malloc1.c: $(MALLOCSRC) Makefile add_file
rm -f malloc1.c
for i in $(MALLOCSRC) ; do add_file $$i >> malloc1.c ; done
malloc.c: malloc1.c
cclash -l7 -c malloc1.c > clashes
cid -Fclashes < malloc1.c > malloc.c
pr:
@pr Makefile add_file $(MALLOCSRC)
opr:
make pr | opr
clean:
rm -f *.$(SUF) clashes malloc1.c gensize_type.h getsize malloc.c
gensize_type.h: getsize
getsize > gensize_type.h
getsize: getsize.c
$(RCC) -o getsize getsize.c

View File

@@ -1,80 +0,0 @@
EMHOME = ../../..
MODULES = $(EMHOME)/modules
INSTALL = $(MODULES)/install
COMPARE = $(MODULES)/compare
INCLUDES = -I$(EMHOME)/h
CFLAGS = -O $(INCLUDES) $(COPT)
AR = ar
SUF = o
LIBSUF = a
RCC = cc # must produce a runnable object
CFILES = rd_arhdr.c wr_arhdr.c \
rd_ranlib.c wr_ranlib.c \
rd_bytes.c wr_bytes.c \
rd.c wr.c \
wr_putc.c \
rd_int2.c wr_int2.c \
rd_unsig2.c \
rd_long.c wr_long.c
# do not change the order in OFILES
OFILES = rd.$(SUF) rd_arhdr.$(SUF) rd_int2.$(SUF) rd_long.$(SUF) rd_ranlib.$(SUF) rd_unsig2.$(SUF) \
rd_bytes.$(SUF) wr_arhdr.$(SUF) wr_int2.$(SUF) wr_long.$(SUF) wr_putc.$(SUF) wr.$(SUF) \
wr_ranlib.$(SUF) wr_bytes.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: libobject.$(LIBSUF)
install: all
$(INSTALL) lib/libobject.$(LIBSUF)
$(INSTALL) man/object.3
compare: all
-$(COMPARE) lib/libobject.$(LIBSUF)
-$(COMPARE) man/object.3
pr:
@pr Makefile byte_order.c object.h $(CFILES)
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF) nohup.out Out byte_order byte_order.h
libobject.$(LIBSUF): $(OFILES)
$(AR) r libobject.$(LIBSUF) $(OFILES)
-sh -c 'ranlib libobject.$(LIBSUF)'
depend: byte_order.h
sed '/^#AUTOAUTO/,$$d' Makefile > Makefile.new
echo '#AUTOAUTOAUTOAUTOAUTOAUTOAUTO' >> Makefile.new
mkdep $(CFILES) | sed 's/\.c:/\.$(SUF):/' >> Makefile.new
mv Makefile Makefile.$(SUF)ld
mv Makefile.new Makefile
byte_order: byte_order.c
$(RCC) -o byte_order byte_order.c
byte_order.h: byte_order
byte_order > byte_order.h
lintlib: byte_order.h
lint $(INCLUDES) -Cobject $(CFILES)
mv llib-lobject.ln $(MODULES)/lib
#AUTOAUTOAUTOAUTOAUTOAUTOAUTO
rd_arhdr.$(SUF): byte_order.h object.h
wr_arhdr.$(SUF): byte_order.h object.h
rd_ranlib.$(SUF): byte_order.h object.h
wr_ranlib.$(SUF): byte_order.h object.h
rd.$(SUF): byte_order.h object.h
wr.$(SUF): byte_order.h object.h
rd_int2.$(SUF): byte_order.h object.h
wr_int2.$(SUF): byte_order.h object.h
rd_unsig2.$(SUF): byte_order.h object.h
rd_long.$(SUF): byte_order.h object.h
wr_long.$(SUF): byte_order.h object.h

View File

@@ -1,54 +0,0 @@
/* $Header$ */
/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
#include <stdio.h>
char bytes_reversed = 0;
char words_reversed = 0;
char char_unsigned = 0;
/*
* Determine the byte/word order in shorts/longs, assuming the size of a short
* is 2 chars, and the size of a long is 4 chars. Not all theoretical
* possibilities are tested; only bytes reversed and/or words reversed.
*/
determine_ordering()
{
short s;
long l;
register char *cp;
register short *sp;
cp = (char *)&s;
cp[0] = 0x01; cp[1] = 0x02;
if (s != 0x01 + (0x02 << 8))
bytes_reversed = 1;
sp = (short *)&l;
sp[0] = 0x0001; sp[1] = 0x0002;
if (l != 0x0001 + (0x0002L << 16))
words_reversed = 1;
}
/*
* determine whether characters are unsigned or signed
*/
uns_char()
{
char c = 0200;
int i = c;
if (i > 0) char_unsigned = 1;
}
main()
{
determine_ordering();
uns_char();
printf("#define BYTES_REVERSED %d\n", bytes_reversed);
printf("#define WORDS_REVERSED %d\n", words_reversed);
printf("#define CHAR_UNSIGNED %d\n", char_unsigned);
return 0;
}

View File

@@ -1,51 +0,0 @@
EMHOME = ../../..
MODDIR=$(EMHOME)/modules
INSTALL = $(MODDIR)/install
COMPARE = $(MODDIR)/compare
INCLUDES = -I$(MODDIR)/h
CFLAGS = -O $(INCLUDES) $(COPT)
AR = ar
SUF = o
LIBSUF = a
LIBPRINT = libprint.$(LIBSUF)
SRC = doprnt.c fprint.c print.c sprint.c format.c
OBJ = doprnt.$(SUF) fprint.$(SUF) print.$(SUF) sprint.$(SUF) format.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: $(LIBPRINT)
$(LIBPRINT): $(OBJ)
rm -f $(LIBPRINT)
$(AR) r $(LIBPRINT) $(OBJ)
-sh -c 'ranlib $(LIBPRINT)'
install: all
$(INSTALL) lib/$(LIBPRINT)
$(INSTALL) man/print.3
cmp: all
-$(COMPARE) lib/$(LIBPRINT)
-$(COMPARE) man/print.3
pr:
@pr Makefile $(SRC)
opr:
make pr | opr
clean:
rm -f *.$(SUF) $(LIBPRINT)
lintlib:
lint $(INCLUDES) -Cprint $(SRC)
mv llib-lprint.ln $(MODDIR)/lib
doprnt.$(SUF): param.h
fprint.$(SUF): param.h
print.$(SUF): param.h
sprint.$(SUF): param.h

View File

@@ -1,119 +0,0 @@
EMHOME = ../../..
MODULES = $(EMHOME)/modules
HDIR = $(MODULES)/h
EMHDIR = $(EMHOME)/h
INCLUDES = -I$(HDIR) -I$(EMHDIR)
DEFINES = -DPRIVATE=static -DEXPORT=
CFLAGS = -O $(INCLUDES) $(DEFINES) $(COPT)
INSTALL = $(MODULES)/install
COMPARE = $(MODULES)/compare
AR = ar
SUF = o
LIBSUF = a
TARGETS = libread_emk.$(LIBSUF)\
libread_emkV.$(LIBSUF)\
libread_emeV.$(LIBSUF) # makecallsO.$(SUF) makecallsCE.$(SUF)
ESRCFILES = read_em.c\
mkcalls.c\
EM_vars.c
KSRCFILES = read_em.c\
mkcalls.c\
EM_vars.c
SRCFILES = em_comp.h\
read_em.c\
reade.c\
readk.c \
mkcalls.c\
EM_vars.c
EV_OFILES = read_emeV.$(SUF) makecallsV.$(SUF) EM_vars.$(SUF)
KV_OFILES = read_emkV.$(SUF) makecallsV.$(SUF) EM_vars.$(SUF)
K_OFILES = read_emk.$(SUF) makecalls.$(SUF) EM_vars.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: $(TARGETS)
install: all
$(INSTALL) h/em_comp.h
$(INSTALL) lib/libread_emk.$(LIBSUF)
$(INSTALL) lib/libread_emkV.$(LIBSUF)
$(INSTALL) lib/libread_emeV.$(LIBSUF)
$(INSTALL) man/read_em.3
# $(INSTALL) lib/makecallsO.$(SUF)
# $(INSTALL) lib/makecallsCE.$(SUF)
cmp: all
-$(COMPARE) h/em_comp.h
-$(COMPARE) lib/libread_emk.$(LIBSUF)
-$(COMPARE) lib/libread_emkV.$(LIBSUF)
-$(COMPARE) lib/libread_emeV.$(LIBSUF)
-$(COMPARE) man/read_em.3
# -$(COMPARE) lib/makecallsO.$(SUF)
# -$(COMPARE) lib/makecallsCE.$(SUF)
pr:
@pr Makefile m_C_mnem m_C_mnem_na argtype $(SRCFILES)
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF) C_mnem C_mnem_narg
libread_emk.$(LIBSUF): $(K_OFILES)
$(AR) r libread_emk.$(LIBSUF) $(K_OFILES)
-sh -c 'ranlib libread_emk.$(LIBSUF)'
libread_emkV.$(LIBSUF): $(KV_OFILES)
$(AR) r libread_emkV.$(LIBSUF) $(KV_OFILES)
-sh -c 'ranlib libread_emkV.$(LIBSUF)'
libread_emeV.$(LIBSUF): $(EV_OFILES)
$(AR) r libread_emeV.$(LIBSUF) $(EV_OFILES)
-sh -c 'ranlib libread_emeV.$(LIBSUF)'
read_emk.$(SUF): read_em.c em_comp.h readk.c
$(CC) -c $(CFLAGS) -DCOMPACT read_em.c
mv read_em.$(SUF) read_emk.$(SUF)
read_emkV.$(SUF): read_em.c em_comp.h readk.c
$(CC) -c $(CFLAGS) -DCOMPACT -DCHECKING read_em.c
mv read_em.$(SUF) read_emkV.$(SUF)
read_emeV.$(SUF): read_em.c em_comp.h reade.c
$(CC) -c $(CFLAGS) -DCHECKING read_em.c
mv read_em.$(SUF) read_emeV.$(SUF)
makecalls.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
$(CC) -c $(CFLAGS) mkcalls.c
mv mkcalls.$(SUF) makecalls.$(SUF)
makecallsV.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
$(CC) -c $(CFLAGS) -DCHECKING mkcalls.c
mv mkcalls.$(SUF) makecallsV.$(SUF)
makecallsO.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
$(CC) -c -DPEEPHOLE $(CFLAGS) mkcalls.c
mv mkcalls.$(SUF) makecallsO.$(SUF)
makecallsCE.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
$(CC) -c -DCODE_EXPANDER $(CFLAGS) mkcalls.c
mv mkcalls.$(SUF) makecallsCE.$(SUF)
C_mnem: m_C_mnem argtype
sh m_C_mnem > C_mnem
C_mnem_narg: m_C_mnem_na argtype
sh m_C_mnem_na > C_mnem_narg
lintlib: C_mnem C_mnem_narg
lint $(INCLUDES) $(DEFINES) -DCOMPACT -DCHECKING -Cread_emkV $(KSRCFILES)
lint $(INCLUDES) $(DEFINES) -DCHECKING -Cread_emeV $(ESRCFILES)
mv llib-lread_emeV.ln llib-lread_emkV.ln $(MODULES)/lib

View File

@@ -1,25 +0,0 @@
EM_TABLE=../../../etc/em_table
ed - $EM_TABLE << EOF
1,/^\$/d
1,/^\$/d
1,\$s/^\(...\).*/int C_\\1();/
w blabla1
q
EOF
ed - $EM_TABLE << A
1,/^\$/d
1,/^\$/d
/^\$/d
1,\$s/^\(...\).*/C_\\1,/
\$a
};
.
1i
static int (*C_funcs[])() = {
0,
.
w blabla2
q
A
cat blabla1 blabla2 > C_funcs
rm blabla1 blabla2

View File

@@ -1,49 +0,0 @@
EMHOME = ../../..
MODULES = $(EMHOME)/modules
INSTALL = $(MODULES)/install
COMPARE = $(MODULES)/compare
AR = ar
SUF = o
LIBSUF = a
CFLAGS = -O $(COPT)
SRC = bts2str.c btscat.c btscmp.c btscpy.c btszero.c long2str.c \
str2bts.c str2long.c strcat.c strcmp.c strcpy.c strindex.c \
strlen.c strncat.c strncmp.c strncpy.c strrindex.c strzero.c
OBJ = bts2str.$(SUF) btscat.$(SUF) btscmp.$(SUF) btscpy.$(SUF) \
btszero.$(SUF) long2str.$(SUF) str2bts.$(SUF) str2long.$(SUF) \
strcat.$(SUF) strcmp.$(SUF) strcpy.$(SUF) strindex.$(SUF) \
strlen.$(SUF) strncat.$(SUF) strncmp.$(SUF) strncpy.$(SUF) \
strrindex.$(SUF) strzero.$(SUF)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: libstring.$(LIBSUF)
libstring.$(LIBSUF): $(OBJ) Makefile
$(AR) r libstring.$(LIBSUF) $(OBJ)
-sh -c 'ranlib libstring.$(LIBSUF)'
install: all
$(INSTALL) lib/libstring.$(LIBSUF)
$(INSTALL) man/string.3
cmp: all
-$(COMPARE) lib/libstring.$(LIBSUF)
-$(COMPARE) man/string.3
pr:
@pr Makefile $(SRC)
opr:
make pr | opr
clean:
rm -f *.$(SUF) *.$(LIBSUF)
lintlib:
lint -Cstring $(SRC)
mv llib-lstring.ln $(MODULES)/lib

View File

@@ -1,63 +0,0 @@
EMHOME = ../../..
MODULES = $(EMHOME)/modules
INSTALL = $(MODULES)/install
COMPARE = $(MODULES)/compare
INCLUDES = -I.
CFLAGS = $(INCLUDES) -O $(COPT)
AR = ar
SUF = o
LIBSUF = a
LIBSYS = libsystem.$(LIBSUF)
OBJ = access.$(SUF) break.$(SUF) chmode.$(SUF) close.$(SUF) create.$(SUF) \
filesize.$(SUF) modtime.$(SUF) lock.$(SUF) open.$(SUF) read.$(SUF) \
remove.$(SUF) stop.$(SUF) system.$(SUF) time.$(SUF) unlock.$(SUF) \
write.$(SUF) seek.$(SUF) rename.$(SUF)
CSRC = access.c break.c chmode.c close.c create.c filesize.c \
modtime.c lock.c open.c read.c remove.c stop.c \
system.c time.c unlock.c write.c seek.c rename.c
SRC = Makefile system.h $(CSRC)
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
all: $(LIBSYS)
$(LIBSYS): $(OBJ)
rm -f $(LIBSYS)
$(AR) r $(LIBSYS) $(OBJ)
-sh -c 'ranlib $(LIBSYS)'
install: all
$(INSTALL) lib/$(LIBSYS)
$(INSTALL) man/system.3
$(INSTALL) h/system.h
cmp: all
-$(COMPARE) lib/$(LIBSYS)
-$(COMPARE) man/system.3
-$(COMPARE) h/system.h
clean:
rm -f *.$(SUF) *.$(LIBSUF)
pr:
@pr $(SRC)
opr:
make pr | opr
lintlib:
lint $(INCLUDES) -Csystem $(CSRC)
mv llib-lsystem.ln $(MODULES)/lib
access.$(SUF): system.h
break.$(SUF): system.h
close.$(SUF): system.h
create.$(SUF): system.h
open.$(SUF): system.h
read.$(SUF): system.h
stop.$(SUF): system.h
system.$(SUF): system.h
write.$(SUF): system.h

View File

@@ -1,13 +0,0 @@
/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
/* $Header$ */
/* called by /lib/crt0.o; needed to suppress the loading of the
standard exit() which performs unnecessary cleanup actions
*/
exit(n)
{
_exit(n);
}