c6a37e8413
critical_enter() and critical_exit() are now solely a mechanism for deferring kernel preemptions. They no longer have any affect on interrupts. This means that standalone critical sections are now very cheap as they are simply unlocked integer increments and decrements for the common case. Spin mutexes now use a separate KPI implemented in MD code: spinlock_enter() and spinlock_exit(). This KPI is responsible for providing whatever MD guarantees are needed to ensure that a thread holding a spin lock won't be preempted by any other code that will try to lock the same lock. For now all archs continue to block interrupts in a "spinlock section" as they did formerly in all critical sections. Note that I've also taken this opportunity to push a few things into MD code rather than MI. For example, critical_fork_exit() no longer exists. Instead, MD code ensures that new threads have the correct state when they are created. Also, we no longer try to fixup the idlethreads for APs in MI code. Instead, each arch sets the initial curthread and adjusts the state of the idle thread it borrows in order to perform the initial context switch. This change is largely a big NOP, but the cleaner separation it provides will allow for more efficient alternative locking schemes in other parts of the kernel (bare critical sections rather than per-CPU spin mutexes for per-CPU data for example). Reviewed by: grehan, cognet, arch@, others Tested on: i386, alpha, sparc64, powerpc, arm, possibly more
382 lines
14 KiB
Plaintext
382 lines
14 KiB
Plaintext
# This file tells config what files go into building a kernel,
|
|
# files marked standard are always included.
|
|
#
|
|
# modified for PC-9801/PC-9821
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
# The long compile-with and dependency lines are required because of
|
|
# limitations in config: backslash-newline doesn't work in strings, and
|
|
# dependency lines other than the first are silently ignored.
|
|
#
|
|
linux_genassym.o optional compat_linux \
|
|
dependency "$S/i386/linux/linux_genassym.c" \
|
|
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
|
|
no-obj no-implicit-rule \
|
|
clean "linux_genassym.o"
|
|
#
|
|
linux_assym.h optional compat_linux \
|
|
dependency "$S/kern/genassym.sh linux_genassym.o" \
|
|
compile-with "sh $S/kern/genassym.sh linux_genassym.o > ${.TARGET}" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "linux_assym.h"
|
|
#
|
|
svr4_genassym.o optional compat_svr4 \
|
|
dependency "$S/i386/svr4/svr4_genassym.c" \
|
|
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
|
|
no-obj no-implicit-rule \
|
|
clean "svr4_genassym.o"
|
|
#
|
|
svr4_assym.h optional compat_svr4 \
|
|
dependency "$S/kern/genassym.sh svr4_genassym.o" \
|
|
compile-with "sh $S/kern/genassym.sh svr4_genassym.o > ${.TARGET}" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "svr4_assym.h"
|
|
#
|
|
ukbdmap.h optional ukbd_dflt_keymap \
|
|
compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "ukbdmap.h"
|
|
#
|
|
trlld.o optional oltr \
|
|
dependency "$S/contrib/dev/oltr/i386-elf.trlld.o.uu" \
|
|
compile-with "uudecode < $S/contrib/dev/oltr/i386-elf.trlld.o.uu" \
|
|
no-implicit-rule
|
|
#
|
|
compat/linux/linux_file.c optional compat_linux
|
|
compat/linux/linux_getcwd.c optional compat_linux
|
|
compat/linux/linux_ioctl.c optional compat_linux
|
|
compat/linux/linux_ipc.c optional compat_linux
|
|
compat/linux/linux_mib.c optional compat_linux
|
|
compat/linux/linux_misc.c optional compat_linux
|
|
compat/linux/linux_signal.c optional compat_linux
|
|
compat/linux/linux_socket.c optional compat_linux
|
|
compat/linux/linux_stats.c optional compat_linux
|
|
compat/linux/linux_sysctl.c optional compat_linux
|
|
compat/linux/linux_uid16.c optional compat_linux
|
|
compat/linux/linux_util.c optional compat_linux
|
|
compat/pecoff/imgact_pecoff.c optional pecoff_support
|
|
compat/svr4/imgact_svr4.c optional compat_svr4
|
|
compat/svr4/svr4_fcntl.c optional compat_svr4
|
|
compat/svr4/svr4_filio.c optional compat_svr4
|
|
compat/svr4/svr4_ioctl.c optional compat_svr4
|
|
compat/svr4/svr4_ipc.c optional compat_svr4
|
|
compat/svr4/svr4_misc.c optional compat_svr4
|
|
compat/svr4/svr4_resource.c optional compat_svr4
|
|
compat/svr4/svr4_signal.c optional compat_svr4
|
|
compat/svr4/svr4_socket.c optional compat_svr4
|
|
compat/svr4/svr4_sockio.c optional compat_svr4
|
|
compat/svr4/svr4_stat.c optional compat_svr4
|
|
compat/svr4/svr4_stream.c optional compat_svr4
|
|
compat/svr4/svr4_syscallnames.c optional compat_svr4
|
|
compat/svr4/svr4_sysent.c optional compat_svr4
|
|
compat/svr4/svr4_sysvec.c optional compat_svr4
|
|
compat/svr4/svr4_termios.c optional compat_svr4
|
|
compat/svr4/svr4_ttold.c optional compat_svr4
|
|
contrib/dev/oltr/if_oltr.c optional oltr
|
|
contrib/dev/oltr/if_oltr_pci.c optional oltr pci
|
|
contrib/dev/oltr/trlldbm.c optional oltr
|
|
contrib/dev/oltr/trlldhm.c optional oltr
|
|
contrib/dev/oltr/trlldmac.c optional oltr
|
|
bf_enc.o optional ipsec ipsec_esp \
|
|
dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \
|
|
compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \
|
|
no-implicit-rule
|
|
crypto/des/arch/i386/des_enc.S optional ipsec ipsec_esp
|
|
crypto/des/des_ecb.c optional netsmbcrypto
|
|
crypto/des/arch/i386/des_enc.S optional netsmbcrypto
|
|
crypto/des/des_setkey.c optional netsmbcrypto
|
|
bf_enc.o optional crypto \
|
|
dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \
|
|
compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \
|
|
no-implicit-rule
|
|
crypto/des/arch/i386/des_enc.S optional crypto
|
|
crypto/des/des_ecb.c optional crypto
|
|
crypto/des/des_setkey.c optional crypto
|
|
dev/aic/aic_cbus.c optional aic isa
|
|
dev/aic/aic_pccard.c optional aic card
|
|
dev/an/if_an_pccard.c optional an card
|
|
dev/ar/if_ar.c optional ar
|
|
dev/ar/if_ar_pci.c optional ar pci
|
|
dev/ata/ata-card.c optional ata card
|
|
dev/awi/if_awi_pccard.c optional awi card
|
|
dev/cnw/if_cnw.c optional cnw card
|
|
dev/cp/cpddk.c optional cp
|
|
dev/cp/if_cp.c optional cp
|
|
dev/cs/if_cs_pccard.c optional cs card
|
|
dev/ct/bshw_machdep.c optional ct
|
|
dev/ct/ct.c optional ct
|
|
dev/ct/ct_isa.c optional ct isa
|
|
dev/ed/if_ed_cbus.c optional ed isa
|
|
dev/ed/if_ed_pccard.c optional ed card
|
|
dev/ed/if_ed_wd80x3.c optional ed isa
|
|
dev/ep/if_ep_pccard.c optional ep card
|
|
dev/ex/if_ex_pccard.c optional ex card
|
|
dev/fb/fb.c optional fb
|
|
dev/fb/fb.c optional gdc
|
|
dev/fb/splash.c optional splash
|
|
dev/fe/if_fe_cbus.c optional fe isa
|
|
dev/fe/if_fe_pccard.c optional fe card
|
|
dev/io/iodev.c optional io
|
|
dev/kbd/kbd.c optional pckbd
|
|
dev/kbd/kbd.c optional sc
|
|
dev/kbd/kbd.c optional ukbd
|
|
dev/lnc/if_lnc_cbus.c optional lnc isa
|
|
dev/mem/memutil.c optional mem
|
|
dev/mse/mse.c optional mse
|
|
dev/mse/mse_cbus.c optional mse isa
|
|
dev/ncv/ncr53c500_pccard.c optional ncv card
|
|
dev/nsp/nsp_pccard.c optional nsp card
|
|
dev/ppc/ppc_puc.c optional ppc puc pci
|
|
dev/ray/if_ray.c optional ray card
|
|
dev/sbni/if_sbni.c optional sbni
|
|
dev/sbni/if_sbni_pci.c optional sbni pci
|
|
dev/sio/sio_pccard.c optional sio card
|
|
dev/sn/if_sn_pccard.c optional sn card
|
|
dev/snc/dp83932.c optional snc
|
|
dev/snc/dp83932subr.c optional snc
|
|
dev/snc/if_snc.c optional snc
|
|
dev/snc/if_snc_cbus.c optional snc isa
|
|
dev/snc/if_snc_pccard.c optional snc card
|
|
dev/stg/tmc18c30_pccard.c optional stg card
|
|
dev/syscons/apm/apm_saver.c optional apm_saver apm
|
|
dev/syscons/schistory.c optional sc
|
|
dev/syscons/scmouse.c optional sc
|
|
dev/syscons/scterm.c optional sc
|
|
dev/syscons/scterm-dumb.c optional sc
|
|
dev/syscons/scvidctl.c optional sc
|
|
dev/syscons/syscons.c optional sc
|
|
dev/syscons/sysmouse.c optional sc
|
|
dev/uart/uart_cpu_pc98.c optional uart
|
|
dev/wi/if_wi_pccard.c optional wi card
|
|
dev/xe/if_xe_pccard.c optional xe card
|
|
geom/geom_bsd.c standard
|
|
geom/geom_bsd_enc.c standard
|
|
geom/geom_pc98.c standard
|
|
geom/geom_pc98_enc.c standard
|
|
i386/bios/apm.c optional apm
|
|
#i386/i386/apic_vector.s optional apic
|
|
i386/i386/atomic.c standard \
|
|
compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
|
|
i386/i386/autoconf.c standard
|
|
i386/i386/bios.c standard
|
|
i386/i386/bioscall.s standard
|
|
i386/i386/busdma_machdep.c standard
|
|
i386/i386/db_disasm.c optional ddb
|
|
i386/i386/db_interface.c optional ddb
|
|
i386/i386/db_trace.c optional ddb
|
|
i386/i386/dump_machdep.c standard
|
|
i386/i386/elf_machdep.c standard
|
|
i386/i386/exception.s standard
|
|
i386/i386/gdb_machdep.c optional gdb
|
|
i386/i386/i686_mem.c optional mem
|
|
i386/i386/identcpu.c standard
|
|
i386/i386/in_cksum.c optional inet
|
|
i386/i386/initcpu.c standard
|
|
i386/i386/intr_machdep.c standard
|
|
i386/i386/io.c optional io
|
|
i386/i386/io_apic.c optional apic
|
|
i386/i386/k6_mem.c optional mem
|
|
i386/i386/legacy.c standard
|
|
i386/i386/local_apic.c optional apic
|
|
i386/i386/locore.s standard no-obj
|
|
i386/i386/mem.c optional mem
|
|
i386/i386/mp_clock.c optional smp
|
|
i386/i386/mp_machdep.c optional smp
|
|
i386/i386/mp_watchdog.c optional mp_watchdog smp
|
|
i386/i386/mpboot.s optional smp
|
|
i386/i386/mptable.c optional apic
|
|
i386/i386/mptable_pci.c optional apic pci
|
|
i386/i386/nexus.c standard
|
|
i386/i386/perfmon.c optional perfmon
|
|
i386/i386/perfmon.c optional perfmon profiling-routine
|
|
i386/i386/pmap.c standard
|
|
i386/i386/support.s standard
|
|
i386/i386/swtch.s standard
|
|
i386/i386/sys_machdep.c standard
|
|
i386/i386/trap.c standard
|
|
i386/i386/tsc.c standard
|
|
i386/i386/uio_machdep.c standard
|
|
i386/i386/vm86.c standard
|
|
i386/i386/vm_machdep.c standard
|
|
i386/ibcs2/ibcs2_errno.c optional ibcs2
|
|
i386/ibcs2/ibcs2_fcntl.c optional ibcs2
|
|
i386/ibcs2/ibcs2_ioctl.c optional ibcs2
|
|
i386/ibcs2/ibcs2_ipc.c optional ibcs2
|
|
i386/ibcs2/ibcs2_isc.c optional ibcs2
|
|
i386/ibcs2/ibcs2_isc_sysent.c optional ibcs2
|
|
i386/ibcs2/ibcs2_misc.c optional ibcs2
|
|
i386/ibcs2/ibcs2_msg.c optional ibcs2
|
|
i386/ibcs2/ibcs2_other.c optional ibcs2
|
|
i386/ibcs2/ibcs2_signal.c optional ibcs2
|
|
i386/ibcs2/ibcs2_socksys.c optional ibcs2
|
|
i386/ibcs2/ibcs2_stat.c optional ibcs2
|
|
i386/ibcs2/ibcs2_sysent.c optional ibcs2
|
|
i386/ibcs2/ibcs2_sysi86.c optional ibcs2
|
|
i386/ibcs2/ibcs2_sysvec.c optional ibcs2
|
|
i386/ibcs2/ibcs2_util.c optional ibcs2
|
|
i386/ibcs2/ibcs2_xenix.c optional ibcs2
|
|
i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2
|
|
i386/ibcs2/imgact_coff.c optional ibcs2
|
|
i386/isa/atpic.c standard
|
|
#i386/isa/atpic_vector.s standard
|
|
i386/isa/elink.c optional ep
|
|
i386/isa/elink.c optional ie
|
|
i386/isa/isa.c optional isa
|
|
i386/isa/npx.c optional npx
|
|
i386/isa/pmtimer.c optional pmtimer
|
|
i386/isa/prof_machdep.c optional profiling-routine
|
|
i386/isa/spkr.c optional speaker
|
|
i386/linux/imgact_linux.c optional compat_linux
|
|
i386/linux/linux_dummy.c optional compat_linux
|
|
i386/linux/linux_locore.s optional compat_linux \
|
|
dependency "linux_assym.h"
|
|
i386/linux/linux_machdep.c optional compat_linux
|
|
i386/linux/linux_ptrace.c optional compat_linux
|
|
i386/linux/linux_sysent.c optional compat_linux
|
|
i386/linux/linux_sysvec.c optional compat_linux
|
|
i386/pci/pci_bus.c optional pci
|
|
i386/pci/pci_cfgreg.c optional pci
|
|
i386/pci/pci_pir.c optional pci
|
|
i386/svr4/svr4_locore.s optional compat_svr4 \
|
|
dependency "svr4_assym.h" \
|
|
warning "COMPAT_SVR4 is broken and should be avoided"
|
|
i386/svr4/svr4_machdep.c optional compat_svr4
|
|
#
|
|
# isdn4bsd, needed for isic | iwic | ifpi | ifpi2 | ihfc | ifpnp | itjc
|
|
#
|
|
i4b/layer1/i4b_hdlc.c optional itjc
|
|
i4b/layer1/i4b_hdlc.c optional ihfc
|
|
i4b/layer1/i4b_l1dmux.c optional isic
|
|
i4b/layer1/i4b_l1lib.c optional isic
|
|
i4b/layer1/i4b_l1dmux.c optional iwic
|
|
i4b/layer1/i4b_l1lib.c optional iwic
|
|
i4b/layer1/i4b_l1dmux.c optional ifpi
|
|
i4b/layer1/i4b_l1lib.c optional ifpi
|
|
i4b/layer1/i4b_l1dmux.c optional ifpi2
|
|
i4b/layer1/i4b_l1lib.c optional ifpi2
|
|
i4b/layer1/i4b_l1dmux.c optional ihfc
|
|
i4b/layer1/i4b_l1lib.c optional ihfc
|
|
i4b/layer1/i4b_l1dmux.c optional ifpnp
|
|
i4b/layer1/i4b_l1lib.c optional ifpnp
|
|
i4b/layer1/i4b_l1dmux.c optional itjc
|
|
i4b/layer1/i4b_l1lib.c optional itjc
|
|
#
|
|
# isdn4bsd, isic
|
|
#
|
|
i4b/layer1/isic/i4b_asuscom_ipac.c optional isic
|
|
i4b/layer1/isic/i4b_avm_a1.c optional isic
|
|
i4b/layer1/isic/i4b_bchan.c optional isic
|
|
i4b/layer1/isic/i4b_ctx_s0P.c optional isic
|
|
i4b/layer1/isic/i4b_drn_ngo.c optional isic
|
|
i4b/layer1/isic/i4b_dynalink.c optional isic
|
|
i4b/layer1/isic/i4b_elsa_qs1i.c optional isic
|
|
i4b/layer1/isic/i4b_elsa_qs1p.c optional isic pci
|
|
i4b/layer1/isic/i4b_elsa_pcc16.c optional isic
|
|
i4b/layer1/isic/i4b_hscx.c optional isic
|
|
i4b/layer1/isic/i4b_isac.c optional isic
|
|
i4b/layer1/isic/i4b_isic.c optional isic
|
|
i4b/layer1/isic/i4b_isic_isa.c optional isic
|
|
i4b/layer1/isic/i4b_isic_pnp.c optional isic
|
|
i4b/layer1/isic/i4b_itk_ix1.c optional isic
|
|
i4b/layer1/isic/i4b_l1.c optional isic
|
|
i4b/layer1/isic/i4b_l1fsm.c optional isic
|
|
i4b/layer1/isic/i4b_siemens_isurf.c optional isic
|
|
i4b/layer1/isic/i4b_sws.c optional isic
|
|
i4b/layer1/isic/i4b_tel_s016.c optional isic
|
|
i4b/layer1/isic/i4b_tel_s0163.c optional isic
|
|
i4b/layer1/isic/i4b_tel_s08.c optional isic
|
|
i4b/layer1/isic/i4b_usr_sti.c optional isic
|
|
i4b/layer1/isic/i4b_diva.c optional isic
|
|
#
|
|
# isdn4bsd, iwic
|
|
#
|
|
i4b/layer1/iwic/i4b_iwic_pci.c optional iwic pci
|
|
i4b/layer1/iwic/i4b_iwic_dchan.c optional iwic pci
|
|
i4b/layer1/iwic/i4b_iwic_bchan.c optional iwic pci
|
|
i4b/layer1/iwic/i4b_iwic_fsm.c optional iwic pci
|
|
i4b/layer1/iwic/i4b_iwic_l1if.c optional iwic pci
|
|
#
|
|
# isdn4bsd, ifpi
|
|
#
|
|
i4b/layer1/ifpi/i4b_ifpi_pci.c optional ifpi pci
|
|
i4b/layer1/ifpi/i4b_ifpi_isac.c optional ifpi pci
|
|
i4b/layer1/ifpi/i4b_ifpi_l1.c optional ifpi pci
|
|
i4b/layer1/ifpi/i4b_ifpi_l1fsm.c optional ifpi pci
|
|
#
|
|
# isdn4bsd, ifpi2
|
|
#
|
|
i4b/layer1/ifpi2/i4b_ifpi2_pci.c optional ifpi2 pci
|
|
i4b/layer1/ifpi2/i4b_ifpi2_isacsx.c optional ifpi2 pci
|
|
i4b/layer1/ifpi2/i4b_ifpi2_l1.c optional ifpi2 pci
|
|
i4b/layer1/ifpi2/i4b_ifpi2_l1fsm.c optional ifpi2 pci
|
|
#
|
|
# isdn4bsd, ifpnp
|
|
#
|
|
i4b/layer1/ifpnp/i4b_ifpnp_avm.c optional ifpnp
|
|
i4b/layer1/ifpnp/i4b_ifpnp_isac.c optional ifpnp
|
|
i4b/layer1/ifpnp/i4b_ifpnp_l1.c optional ifpnp
|
|
i4b/layer1/ifpnp/i4b_ifpnp_l1fsm.c optional ifpnp
|
|
#
|
|
# isdn4bsd, ihfc
|
|
#
|
|
i4b/layer1/ihfc/i4b_ihfc_l1if.c optional ihfc
|
|
i4b/layer1/ihfc/i4b_ihfc_pnp.c optional ihfc
|
|
i4b/layer1/ihfc/i4b_ihfc_drv.c optional ihfc
|
|
#
|
|
# isdn4bsd, itjc
|
|
#
|
|
i4b/layer1/itjc/i4b_itjc_pci.c optional itjc
|
|
i4b/layer1/itjc/i4b_itjc_isac.c optional itjc
|
|
i4b/layer1/itjc/i4b_itjc_l1.c optional itjc
|
|
i4b/layer1/itjc/i4b_itjc_l1fsm.c optional itjc
|
|
#
|
|
kern/imgact_aout.c optional compat_aout
|
|
kern/imgact_gzip.c optional gzip
|
|
libkern/divdi3.c standard
|
|
libkern/ffsl.c standard
|
|
libkern/flsl.c standard
|
|
libkern/moddi3.c standard
|
|
libkern/qdivrem.c standard
|
|
libkern/ucmpdi2.c standard
|
|
libkern/udivdi3.c standard
|
|
libkern/umoddi3.c standard
|
|
pc98/apm/apm_bioscall.s optional apm
|
|
pc98/i386/busio.s standard
|
|
pc98/i386/busiosubr.c standard
|
|
pc98/i386/machdep.c standard
|
|
pc98/pc98/canbepm.c optional canbepm
|
|
pc98/pc98/canbus.c optional canbus
|
|
pc98/pc98/canbus_if.m optional canbus
|
|
pc98/pc98/clock.c standard
|
|
pc98/pc98/fd.c optional fdc
|
|
pc98/pc98/fdc_cbus.c optional fdc isa
|
|
pc98/pc98/isa_dma.c optional isa
|
|
pc98/pc98/nmi.c standard
|
|
pc98/pc98/olpt.c optional olpt
|
|
pc98/pc98/pc98_machdep.c standard
|
|
pc98/pc98/pc98gdc.c optional gdc
|
|
pc98/pc98/pc98kbd.c optional pckbd
|
|
pc98/pc98/pmc.c optional pmc
|
|
pc98/pc98/ppc.c optional ppc
|
|
pc98/pc98/scgdcrndr.c optional sc gdc
|
|
pc98/pc98/scterm-sck.c optional sc
|
|
pc98/pc98/scvtbpc98.c optional sc
|
|
pc98/pc98/sio.c optional sio
|
|
pc98/pc98/sio_cbus.c optional sio isa
|
|
pc98/pc98/syscons_pc98.c optional sc
|
|
pccard/pccard.c optional card
|
|
pccard/pccard_beep.c optional card
|
|
pccard/pccard_nbk.c optional card
|
|
pccard/pcic.c optional pcic card
|
|
pccard/pcic_isa.c optional pcic card isa
|
|
pccard/pcic_pci.c optional pcic card pci
|
|
pccard/mecia.c optional mecia card
|
|
pci/agp_ali.c optional agp
|
|
pci/agp_amd.c optional agp
|
|
pci/agp_i810.c optional agp
|
|
pci/agp_intel.c optional agp
|
|
pci/agp_nvidia.c optional agp
|
|
pci/agp_sis.c optional agp
|
|
pci/agp_via.c optional agp
|