mirror of
https://github.com/opnsense/src.git
synced 2026-04-21 22:27:47 -04:00
bootloader. Implement the following routines: pcibios-device-count count the number of instances of a devid pcibios-read-config read pci config space pcibios-write-config write pci config space pcibios-find-devclass find the nth device with a given devclass pcibios-find-device find the nth device with a given devid pcibios-locator convert bus device function ti pcibios locator These commands are thin wrappers over their PCI BIOS 2.1 counterparts. More informaiton, such as it is, can be found in the standard. Export a nunmber of pcibios.X variables into the environment to report what the PCI IDENTIFY command returned. Also implmenet a new command line primitive (pci-device-count), but don't include it by default just yet, since it depends on the recently added words and any errors here can render a system unbootable. This is intended to allow the boot loader to do special things based on the hardware it finds. This could be have special settings that are optimized for the specific cards, or even loading special drivers. It goes without saying that writing to pci config space should not be done without a just cause and a sound mind. Sponsored by: Netflix
138 lines
3.3 KiB
Makefile
138 lines
3.3 KiB
Makefile
# $FreeBSD$
|
|
|
|
.include <src.opts.mk>
|
|
MK_SSP= no
|
|
|
|
LOADER?= loader
|
|
PROG= ${LOADER}.sym
|
|
INTERNALPROG=
|
|
NEWVERSWHAT?= "bootstrap loader" x86
|
|
|
|
# architecture-specific loader code
|
|
SRCS= main.c conf.c vers.c
|
|
|
|
# Put LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf for FireWire/dcons support
|
|
.if defined(LOADER_FIREWIRE_SUPPORT)
|
|
CFLAGS+= -DLOADER_FIREWIRE_SUPPORT
|
|
LIBFIREWIRE= ${.OBJDIR}/../libfirewire/libfirewire.a
|
|
.endif
|
|
|
|
# Set by zfsloader Makefile
|
|
.if defined(LOADER_ZFS_SUPPORT)
|
|
CFLAGS+= -DLOADER_ZFS_SUPPORT
|
|
LIBZFSBOOT= ${.OBJDIR}/../../zfs/libzfsboot.a
|
|
.endif
|
|
|
|
# Enable PXE TFTP or NFS support, not both.
|
|
.if defined(LOADER_TFTP_SUPPORT)
|
|
CFLAGS+= -DLOADER_TFTP_SUPPORT
|
|
.else
|
|
CFLAGS+= -DLOADER_NFS_SUPPORT
|
|
.endif
|
|
|
|
# Include bcache code.
|
|
HAVE_BCACHE= yes
|
|
|
|
# Enable PnP and ISA-PnP code.
|
|
HAVE_PNP= yes
|
|
HAVE_ISABUS= yes
|
|
|
|
.if ${MK_FORTH} != "no"
|
|
# Enable BootForth
|
|
BOOT_FORTH= yes
|
|
CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
|
|
.if ${MACHINE_CPUARCH} == "amd64"
|
|
LIBFICL= ${.OBJDIR}/../../ficl32/libficl.a
|
|
.else
|
|
LIBFICL= ${.OBJDIR}/../../ficl/libficl.a
|
|
.endif
|
|
.endif
|
|
|
|
.if defined(LOADER_BZIP2_SUPPORT)
|
|
CFLAGS+= -DLOADER_BZIP2_SUPPORT
|
|
.endif
|
|
.if !defined(LOADER_NO_GZIP_SUPPORT)
|
|
CFLAGS+= -DLOADER_GZIP_SUPPORT
|
|
.endif
|
|
.if defined(LOADER_NANDFS_SUPPORT)
|
|
CFLAGS+= -DLOADER_NANDFS_SUPPORT
|
|
.endif
|
|
|
|
# Always add MI sources
|
|
.PATH: ${.CURDIR}/../../common
|
|
.include "${.CURDIR}/../../common/Makefile.inc"
|
|
CFLAGS+= -I${.CURDIR}/../../common
|
|
CFLAGS+= -I.
|
|
|
|
CLEANFILES= vers.c ${LOADER} ${LOADER}.bin loader.help
|
|
|
|
CFLAGS+= -Wall
|
|
LDFLAGS= -static -Ttext 0x0
|
|
|
|
# i386 standalone support library
|
|
LIBI386= ${.OBJDIR}/../libi386/libi386.a
|
|
CFLAGS+= -I${.CURDIR}/..
|
|
|
|
LIBSTAND= ${.OBJDIR}/../../libstand32/libstand.a
|
|
|
|
# BTX components
|
|
CFLAGS+= -I${.CURDIR}/../btx/lib
|
|
|
|
# Debug me!
|
|
#CFLAGS+= -g
|
|
#LDFLAGS+= -g
|
|
|
|
# Pick up ../Makefile.inc early.
|
|
.include <bsd.init.mk>
|
|
|
|
vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
|
|
sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
|
|
${NEWVERSWHAT}
|
|
|
|
${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
|
|
btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
|
|
-b ${BTXKERN} ${LOADER}.bin
|
|
|
|
${LOADER}.bin: ${LOADER}.sym
|
|
cp ${.ALLSRC} ${.TARGET}
|
|
strip -R .comment -R .note ${.TARGET}
|
|
|
|
loader.help: help.common help.i386
|
|
cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
|
|
|
|
FILES= ${LOADER}
|
|
# XXX INSTALLFLAGS_loader= -b
|
|
FILESMODE_${LOADER}= ${BINMODE} -b
|
|
|
|
.if !defined(LOADER_ONLY)
|
|
.PATH: ${.CURDIR}/../../forth
|
|
FILES+= loader.help loader.4th support.4th loader.conf
|
|
FILES+= screen.4th frames.4th beastie.4th
|
|
FILES+= brand.4th check-password.4th color.4th delay.4th
|
|
FILES+= menu.4th menu-commands.4th menusets.4th shortcuts.4th version.4th
|
|
FILES+= pcibios.4th
|
|
FILESDIR_loader.conf= /boot/defaults
|
|
|
|
.if !exists(${DESTDIR}/boot/loader.rc)
|
|
FILES+= loader.rc
|
|
.endif
|
|
.if !exists(${DESTDIR}/boot/menu.rc)
|
|
FILES+= menu.rc
|
|
.endif
|
|
.endif
|
|
|
|
# XXX crt0.o needs to be first for pxeboot(8) to work
|
|
OBJS= ${BTXCRT}
|
|
|
|
DPADD= ${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
|
|
LDADD= ${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
|
|
|
|
.include <bsd.prog.mk>
|
|
|
|
.if ${MACHINE_CPUARCH} == "amd64"
|
|
beforedepend ${OBJS}: machine
|
|
CLEANFILES+= machine
|
|
CFLAGS+= -DLOADER_PREFER_AMD64
|
|
machine: .NOPATH
|
|
ln -sf ${.CURDIR}/../../../i386/include machine
|
|
.endif
|