stand/uboot: reorg

Build uboot ubldr and friends like we build efi binaries
o move everything to be under stand/uboot
o md code goes in arch/$ARCH
o move everything over from the library
  - Had to rename console.c, disk.c and module.c due to conflicts
o update version to 1.5 to reflect the new way of building

This results in a more consistent build system and should represent no
functional change, apart from powerpc version getting new help
file. Also, moved to exlcuding uboot on powerpc64le by using
BROKEN_OPTION instead of the incidental exclusion we had before due to
Makefile reorgs.

Sponsored by:		Netflix
Feedback by:		stevek, jrtc27
Differential Revision:	https://reviews.freebsd.org/D33362
This commit is contained in:
Warner Losh 2021-12-14 21:09:53 -07:00
parent aab8ed235a
commit 9dc70af83e
40 changed files with 119 additions and 219 deletions

View file

@ -314,8 +314,8 @@ BROKEN_OPTIONS+=EFI
.if ${__T:Mpowerpc*} == ""
BROKEN_OPTIONS+=LOADER_OFW
.endif
# UBOOT is only for arm, mips and powerpc, exclude others
.if ${__T:Marm*} == "" && ${__T:Mmips*} == "" && ${__T:Mpowerpc*} == ""
# UBOOT is only for arm, and big-endian powerpc
.if (${__T:Marm*} == "" && ${__T:Mpowerpc*} == "") || ${__T} == "powerpc64le"
BROKEN_OPTIONS+=LOADER_UBOOT
.endif
# GELI and Lua in loader currently cause boot failures on powerpc.

View file

@ -81,6 +81,11 @@ SUBDIR_DEPEND_efi+= ${INTERP_DEPENDS}
SUBDIR_DEPEND_efi+= fdt
.endif
SUBDIR_DEPEND_uboot+= ${INTERP_DEPENDS}
.if ${MK_FDT} != "no"
SUBDIR_DEPEND_uboot+= fdt
.endif
SUBDIR_PARALLEL= yes
.include <bsd.subdir.mk>

View file

@ -1,7 +0,0 @@
# $FreeBSD$
NO_OBJ=t
SUBDIR= uboot
.include <bsd.subdir.mk>

View file

@ -1,3 +0,0 @@
# $FreeBSD$
.include "../Makefile.inc"

View file

@ -1,68 +0,0 @@
# $FreeBSD$
LOADER_UFS_SUPPORT?= yes
LOADER_CD9660_SUPPORT?= no
LOADER_MSDOS_SUPPORT?= no
LOADER_EXT2FS_SUPPORT?= no
LOADER_NET_SUPPORT?= yes
LOADER_NFS_SUPPORT?= yes
LOADER_TFTP_SUPPORT?= no
LOADER_GZIP_SUPPORT?= no
LOADER_BZIP2_SUPPORT?= no
.include <bsd.init.mk>
FILES+= ubldr ubldr.bin
NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH}
INSTALLFLAGS= -b
WARNS?= 1
# Address at which ubldr will be loaded.
# This varies for different boards and SOCs.
UBLDR_LOADADDR?= 0x1000000
# Architecture-specific loader code
SRCS= start.S conf.c self_reloc.c vers.c
.if ${COMPILER_TYPE} == "gcc"
CWARNFLAGS.self_reloc.c+= -Wno-error=maybe-uninitialized
.endif
HELP_FILES= ${.CURDIR}/help.uboot ${BOOTSRC}/fdt/help.fdt
# Always add MI sources
.include "${BOOTSRC}/loader.mk"
LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
LDFLAGS+= -Wl,-znotext
# Pull in common loader code
.include "${BOOTSRC}/uboot.mk"
CFLAGS+= -fPIC
DPADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
LDADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
ldscript.abs:
echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET}
ldscript.pie:
echo "UBLDR_LOADADDR = 0;" >${.TARGET}
ubldr: ${OBJS} ldscript.abs ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD}
${CC} ${CFLAGS} -T ldscript.abs ${LDFLAGS} \
-o ${.TARGET} ${OBJS} ${LDADD}
ubldr.pie: ${OBJS} ldscript.pie ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD}
${CC} ${CFLAGS} -T ldscript.pie ${LDFLAGS} -pie -Wl,-Bsymbolic \
-o ${.TARGET} ${OBJS} ${LDADD}
ubldr.bin: ubldr.pie
${OBJCOPY} -S -O binary ubldr.pie ${.TARGET}
CLEANFILES+= ldscript.abs ldscript.pie ubldr ubldr.pie ubldr.bin
.include <bsd.prog.mk>

View file

@ -1,10 +0,0 @@
$FreeBSD$
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important. Make sure the current version number is on line 6.
1.3: Remove NAND FS support.
1.2: Extended with NAND FS support.
1.1: Flattened Device Tree blob support.
1.0: Added storage support. Booting from HDD, USB, etc. is now possible.
0.5: Initial U-Boot/arm version (netbooting only).

View file

@ -6,10 +6,6 @@ NO_OBJ=t
SUBDIR.yes= boot1.chrp ofw
.if "${MACHINE_ARCH}" != "powerpc64le"
SUBDIR.${MK_FDT}+= uboot
.endif
.if "${MACHINE_ARCH}" == "powerpc64"
SUBDIR.${MK_FDT}+= kboot
.endif

View file

@ -1,36 +0,0 @@
# $FreeBSD$
LOADER_UFS_SUPPORT?= yes
LOADER_CD9660_SUPPORT?= no
LOADER_EXT2FS_SUPPORT?= no
LOADER_NET_SUPPORT?= yes
LOADER_NFS_SUPPORT?= yes
LOADER_TFTP_SUPPORT?= no
LOADER_GZIP_SUPPORT?= no
LOADER_BZIP2_SUPPORT?= no
.include <bsd.init.mk>
BINDIR= /boot/uboot
PROG= ubldr
NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH}
INSTALLFLAGS= -b
# Architecture-specific loader code
SRCS= start.S conf.c vers.c ppc64_elf_freebsd.c
SRCS+= ucmpdi2.c
# Always add MI sources
.include "${BOOTSRC}/loader.mk"
.PATH: ${SYSDIR}/libkern
LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc
.include "${BOOTSRC}/uboot.mk"
DPADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
LDADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
MK_PIE= no
.include <bsd.prog.mk>

View file

@ -1,11 +0,0 @@
$FreeBSD$
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important. Make sure the current version number is on line 6.
1.1: Flattened Device Tree blob support.
1.0: Added storage support.
0.6: Integrated with the new U-Boot API
0.5: Full network functionality.
0.2: Initial U-Boot/PowerPC version derived from the existing
OpenFirmware-based.

View file

@ -1,21 +0,0 @@
# $FreeBSD$
SRCS+= main.c
.PATH: ${UBOOTSRC}/common
CFLAGS+= -I${UBOOTSRC}/common
# U-Boot standalone support library
LIBUBOOT= ${BOOTOBJ}/uboot/lib/libuboot.a
CFLAGS+= -I${UBOOTSRC}/lib
CFLAGS+= -I${BOOTOBJ}/uboot/lib
.if ${MACHINE_CPUARCH} == "arm"
SRCS+= metadata.c
.endif
.include "${BOOTSRC}/fdt.mk"
.if ${MK_FDT} == "yes"
LIBUBOOT_FDT= ${BOOTOBJ}/uboot/fdt/libuboot_fdt.a
.endif

View file

@ -1,9 +1,81 @@
# $FreeBSD$
LOADER_UFS_SUPPORT?= yes
LOADER_CD9660_SUPPORT?= no
LOADER_MSDOS_SUPPORT?= no
LOADER_EXT2FS_SUPPORT?= no
LOADER_NET_SUPPORT?= yes
LOADER_NFS_SUPPORT?= yes
LOADER_TFTP_SUPPORT?= no
LOADER_GZIP_SUPPORT?= no
LOADER_BZIP2_SUPPORT?= no
LOADER_DISK_SUPPORT?= yes
.include <bsd.init.mk>
SUBDIR.yes= lib
.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc"
SUBDIR.${MK_FDT}+=fdt
.if ${MK_PIE} == "yes"
FILES+= ubldr ubldr.bin
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.else
PROG= ubldr
.endif
.include <bsd.subdir.mk>
NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH}
BINDIR= /boot/uboot
INSTALLFLAGS= -b
WARNS?= 1
.PATH: ${BOOTSRC}/common
.PATH: ${.CURDIR}/arch/${MACHINE_CPUARCH}
.if ${COMPILER_TYPE} == "gcc"
CWARNFLAGS.self_reloc.c+= -Wno-error=maybe-uninitialized
.endif
HELP_FILES= ${.CURDIR}/help.uboot ${BOOTSRC}/fdt/help.fdt
# Always add MI sources
.include "${BOOTSRC}/loader.mk"
LDSCRIPT= ${.CURDIR}/arch/${MACHINE_CPUARCH}/ldscript.${MACHINE_CPUARCH}
LDFLAGS= -nostdlib -static -T ${LDSCRIPT}
LDFLAGS+= -Wl,-znotext
SRCS+= main.c vers.c
SRCS+= copy.c devicename.c elf_freebsd.c glue.c
SRCS+= net.c reboot.c time.c gfx_fb_stub.c
SRCS+= uboot_console.c uboot_disk.c uboot_fdt.c uboot_module.c
CFLAGS.gfx_fb_stub.c += -I${SRCTOP}/contrib/pnglite -I${SRCTOP}/sys/teken
CFLAGS.glue.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib
CFLAGS+= -I${BOOTSRC}/common
CFLAGS+= -I${.CURDIR}
CFLAGS+= -I${.OBJDIR}
.if ${MACHINE_CPUARCH} == "arm"
SRCS+= metadata.c
.endif
.include "${BOOTSRC}/fdt.mk"
CFLAGS+= -fPIC
# Pick up the bootstrap header for some interface items
CFLAGS+= -I${LDRSRC}
# libfdt headers
CFLAGS+= -I${FDTSRC}
.ifdef(BOOT_DISK_DEBUG)
# Make the disk code more talkative
CFLAGS+= -DDISK_DEBUG
.endif
DPADD= ${LDR_INTERP} ${LIBFDT} ${LIBSA}
LDADD= ${LDR_INTERP} ${LIBFDT} ${LIBSA}
.include <bsd.prog.mk>

View file

@ -1,3 +0,0 @@
# $FreeBSD$
.include "../Makefile.inc"

View file

@ -0,0 +1,25 @@
# Address at which ubldr will be loaded.
# This varies for different boards and SOCs.
UBLDR_LOADADDR?= 0x1000000
SRCS+= start.S conf.c self_reloc.c
ldscript.abs:
echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET}
ldscript.pie:
echo "UBLDR_LOADADDR = 0;" >${.TARGET}
ubldr: ${OBJS} ldscript.abs ${LDSCRIPT} ${DPADD}
${CC} ${CFLAGS} -T ldscript.abs ${LDFLAGS} \
-o ${.TARGET} ${OBJS} ${LDADD}
ubldr.pie: ${OBJS} ldscript.pie ${LDSCRIPT} ${DPADD}
${CC} ${CFLAGS} -T ldscript.pie ${LDFLAGS} -pie -Wl,-Bsymbolic \
-o ${.TARGET} ${OBJS} ${LDADD}
ubldr.bin: ubldr.pie
${OBJCOPY} -S -O binary ubldr.pie ${.TARGET}
CLEANFILES+= ldscript.abs ldscript.pie ubldr ubldr.pie ubldr.bin

View file

@ -0,0 +1,6 @@
SRCS+= start.S conf.c ppc64_elf_freebsd.c
.PATH: ${SYSDIR}/libkern
SRCS+= ucmpdi2.c
MK_PIE= no

View file

@ -1,21 +0,0 @@
# $FreeBSD$
.include <bsd.init.mk>
.PATH: ${LDRSRC}
LIB= uboot_fdt
WARNS?= 2
SRCS= uboot_fdt.c
# U-Boot library headers
CFLAGS+= -I${UBOOTSRC}/lib
# libfdt headers
CFLAGS+= -I${FDTSRC}
# Pick up the bootstrap header for some interface items
CFLAGS+= -I${LDRSRC}
.include <bsd.lib.mk>

View file

@ -1,30 +0,0 @@
# $FreeBSD$
.include <bsd.init.mk>
.PATH: ${LDRSRC}
LIB= uboot
WARNS?= 2
SRCS= console.c copy.c devicename.c elf_freebsd.c glue.c
SRCS+= module.c net.c reboot.c time.c gfx_fb_stub.c
CFLAGS.gfx_fb_stub.c += -I${SRCTOP}/contrib/pnglite -I${SRCTOP}/sys/teken
CFLAGS.glue.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib
.if ${LOADER_DISK_SUPPORT:Uyes} == "yes"
SRCS+= disk.c
.endif
.include "${BOOTSRC}/fdt.mk"
# Pick up the bootstrap header for some interface items
CFLAGS+= -I${LDRSRC}
.ifdef(BOOT_DISK_DEBUG)
# Make the disk code more talkative
CFLAGS+= -DDISK_DEBUG
.endif
.include <bsd.lib.mk>

6
stand/uboot/version Normal file
View file

@ -0,0 +1,6 @@
$FreeBSD$
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important. Make sure the current version number is on line 6.
1.5: Unified ubldr build