12a5c54a00
John Dyson to make it reliably work under FreeBSD. 2) Added and enabled PROCFS in the GENERICxx and LINT kernels. 3) New execve() from me. Still work to be done here, but this version works well and is needed before other changes can be made. For a description of the design behind this, see freebsd-arch or ask me. 4) Rewrote stack fault code; made user stack VM grow as needed rather than all up front; improves performance a little and reduces process memory requirements. 5) Incorporated fix from Gene Stark to fault/wire a user page table page to fix a problem in copyout. This is a temporary fix and is not appropriate for pageable page tables. For a description of the problem, see Gene's post to the freebsd-hackers mailing list. 6) Tighten up vm_page struct to reduce memory requirements for it. ifdef pager page lock code as it's not being used currently. 7) Introduced new element to vmspace struct - vm_minsaddr; initial (minimum) stack address. Compliment to vm_maxsaddr. 8) Added a panic if the allocation for process u-pages fails. 9) Improve performance and accuracy of kernel profiling by putting in a little inline assembly instead of spl(). 10) Made serial console with sio driver work. Still has problems with serial input, but is almost useable. 11) Added -Bstatic to SYSTEM_LD in Makefile.i386 so that kernels will build properly with the new ld.
179 lines
5.4 KiB
Makefile
179 lines
5.4 KiB
Makefile
# Copyright 1990 W. Jolitz
|
|
# from: @(#)Makefile.i386 7.1 5/10/91
|
|
# $Id: Makefile.i386,v 1.16 1993/11/25 01:30:38 wollman Exp $
|
|
#
|
|
# Makefile for FreeBSD
|
|
#
|
|
# This makefile is constructed from a machine description:
|
|
# config machineid
|
|
# Most changes should be made in the machine description
|
|
# /sys/i386/conf/``machineid''
|
|
# after which you should do
|
|
# config machineid
|
|
# Generic makefile changes should be made in
|
|
# /sys/i386/conf/Makefile.i386
|
|
# after which config should be rerun for all machines.
|
|
#
|
|
# N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE INVISIBLE TO MAKEFILE
|
|
# IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
|
|
#
|
|
# -DTRACE compile in kernel tracing hooks
|
|
# -DQUOTA compile in file system quotas
|
|
#
|
|
TOUCH= touch -f -c
|
|
LD= /usr/bin/ld
|
|
CC= cc
|
|
CPP= cpp
|
|
STRIP= strip
|
|
DBSYM= /usr/sbin/dbsym
|
|
|
|
S= ../..
|
|
I386= ../../i386
|
|
|
|
CWARNFLAGS=-W -Wreturn-type -Wcomment
|
|
#
|
|
# The following flags are next up for working on:
|
|
# -Wtraditional -Wredundant-decls -Wnested-externs
|
|
#
|
|
# When working on removing warnings from code, the `-Werror' flag should be
|
|
# of material assistance.
|
|
#
|
|
COPTFLAGS=-O
|
|
INCLUDES= -I. -I$S -I$S/sys
|
|
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Di386 -DNPX
|
|
ASFLAGS=
|
|
CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
|
|
LOAD_ADDRESS?= FE000000
|
|
|
|
NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
|
|
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
|
|
NORMAL_S= ${CPP} -I. -DLOCORE ${COPTS} $< | ${AS} ${ASFLAGS} -o $*.o
|
|
DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
|
|
DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
|
|
SYSTEM_OBJS=locore.o exception.o swtch.o support.o ${OBJS} param.o \
|
|
ioconf.o conf.o machdep.o
|
|
SYSTEM_DEP=Makefile symbols.sort ${SYSTEM_OBJS}
|
|
SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
|
|
SYSTEM_LD= @${LD} -Bstatic -z -T ${LOAD_ADDRESS} -o $@ -X vers.o ${SYSTEM_OBJS}
|
|
SYSTEM_LD_TAIL= @echo rearranging symbols; symorder symbols.sort $@; \
|
|
${DBSYM} -fT ${LOAD_ADDRESS} $@; ${STRIP} -x $@; size $@; chmod 755 $@
|
|
|
|
# (XXX) ok, this is weird. but we've got a working ed, and a broken ex, and
|
|
# the script is identical for either... -- cgd
|
|
#
|
|
GPROF.EX= /usr/src/lib/csu.i386/gprof.ex
|
|
PROFILE_C= ${CC} -S -c ${CFLAGS} $< ; \
|
|
ed - $*.s < ${GPROF.EX} ; \
|
|
${AS} -o $@ $*.s ; \
|
|
rm -f $*.s
|
|
|
|
%OBJS
|
|
|
|
%CFILES
|
|
|
|
%LOAD
|
|
|
|
clean:
|
|
rm -f eddep *386bsd tags *.o locore.i [a-uw-z]*.s \
|
|
errs linterrs makelinks genassym ,assym.s stamp-assym
|
|
|
|
#lint: /tmp param.c
|
|
# @lint -hbxn -I. -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
|
|
# ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
|
|
# grep -v 'struct/union .* never defined' | \
|
|
# grep -v 'possible pointer alignment problem'
|
|
|
|
symbols.sort: ${I386}/i386/symbols.raw
|
|
grep -v '^#' ${I386}/i386/symbols.raw \
|
|
| sed 's/^ //' | sort -u > symbols.sort
|
|
|
|
locore.o: assym.s ${I386}/i386/locore.s machine/trap.h machine/psl.h \
|
|
machine/pte.h ${I386}/isa/vector.s ${I386}/isa/icu.s \
|
|
$S/sys/errno.h machine/specialreg.h ${I386}/isa/debug.h \
|
|
${I386}/isa/icu.h ${I386}/isa/isa.h vector.h $S/net/netisr.h \
|
|
machine/asmacros.h
|
|
${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/locore.s | \
|
|
${AS} ${ASFLAGS} -o locore.o
|
|
|
|
exception.o: assym.s ${I386}/i386/exception.s machine/trap.h \
|
|
${I386}/isa/vector.s ${I386}/isa/icu.s \
|
|
$S/sys/errno.h ${I386}/isa/icu.h ${I386}/isa/isa.h vector.h \
|
|
$S/net/netisr.h machine/asmacros.h
|
|
${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/exception.s | \
|
|
${AS} ${ASFLAGS} -o exception.o
|
|
|
|
swtch.o: assym.s ${I386}/i386/swtch.s \
|
|
$S/sys/errno.h ${I386}/isa/debug.h machine/asmacros.h
|
|
${CPP} -I. ${COPTS} ${I386}/i386/swtch.s | \
|
|
${AS} ${ASFLAGS} -o swtch.o
|
|
|
|
support.o: assym.s ${I386}/i386/support.s \
|
|
$S/sys/errno.h machine/asmacros.h
|
|
${CPP} -I. ${COPTS} ${I386}/i386/support.s | \
|
|
${AS} ${ASFLAGS} -o support.o
|
|
|
|
machdep.o: ${I386}/i386/machdep.c Makefile
|
|
${CC} -c ${CFLAGS} -DLOAD_ADDRESS=0x${LOAD_ADDRESS} ${PROF} $<
|
|
|
|
# the following is necessary because autoconf.o depends on #if GENERIC
|
|
autoconf.o: Makefile
|
|
|
|
# depend on network configuration
|
|
af.o uipc_proto.o locore.o: Makefile
|
|
|
|
# depends on KDB (cons.o also depends on GENERIC)
|
|
trap.o cons.o: Makefile
|
|
|
|
assym.s: genassym
|
|
./genassym >,assym.s
|
|
if cmp -s assym.s ,assym.s; then \
|
|
rm -f ,assym.s; \
|
|
else \
|
|
rm -f assym.s; \
|
|
mv ,assym.s assym.s; \
|
|
fi
|
|
|
|
# Some of the defines that genassym outputs may well depend on the
|
|
# value of kernel options.
|
|
genassym: Makefile
|
|
${CC} ${INCLUDES} -DKERNEL ${IDENT} ${PARAM} \
|
|
${I386}/i386/genassym.c -o genassym
|
|
|
|
depend: assym.s param.c
|
|
sh /usr/bin/mkdep -DLOAD_ADDRESS=0x${LOAD_ADDRESS} ${COPTS} ${CFILES} ioconf.c param.c ${I386}/i386/conf.c
|
|
sh /usr/bin/mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${I386}/i386/genassym.c
|
|
|
|
links:
|
|
egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
|
|
sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
|
|
echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
|
|
sort -u | comm -23 - dontlink | \
|
|
sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
|
|
sh makelinks && rm -f dontlink
|
|
|
|
tags:
|
|
@echo "see $S/kern/Makefile for tags"
|
|
|
|
ioconf.o: ioconf.c $S/sys/param.h machine/pte.h $S/sys/buf.h \
|
|
${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h
|
|
${CC} -c ${CFLAGS} ioconf.c
|
|
|
|
conf.o: ${I386}/i386/conf.c $S/sys/conf.h
|
|
${CC} -c ${CFLAGS} ${I386}/i386/conf.c
|
|
|
|
param.c: $S/conf/param.c
|
|
-rm -f param.c
|
|
cp $S/conf/param.c .
|
|
|
|
param.o: param.c Makefile
|
|
${CC} -c ${CFLAGS} ${PARAM} param.c
|
|
|
|
vers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
|
|
sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
|
|
${CC} ${CFLAGS} -c vers.c
|
|
|
|
%RULES
|
|
|
|
# DO NOT DELETE THIS LINE -- make depend uses it
|
|
|