diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -314,8 +314,8 @@ .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. diff --git a/stand/Makefile b/stand/Makefile --- a/stand/Makefile +++ b/stand/Makefile @@ -81,6 +81,11 @@ SUBDIR_DEPEND_efi+= fdt .endif +SUBDIR_DEPEND_uboot+= ${INTERP_DEPENDS} +.if ${MK_FDT} != "no" +SUBDIR_DEPEND_uboot+= fdt +.endif + SUBDIR_PARALLEL= yes .include diff --git a/stand/arm/Makefile b/stand/arm/Makefile deleted file mode 100644 --- a/stand/arm/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -NO_OBJ=t - -SUBDIR= uboot - -.include diff --git a/stand/arm/Makefile.inc b/stand/arm/Makefile.inc deleted file mode 100644 --- a/stand/arm/Makefile.inc +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -.include "../Makefile.inc" diff --git a/stand/arm/uboot/Makefile b/stand/arm/uboot/Makefile deleted file mode 100644 --- a/stand/arm/uboot/Makefile +++ /dev/null @@ -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 - -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 diff --git a/stand/arm/uboot/version b/stand/arm/uboot/version deleted file mode 100644 --- a/stand/arm/uboot/version +++ /dev/null @@ -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). diff --git a/stand/powerpc/Makefile b/stand/powerpc/Makefile --- a/stand/powerpc/Makefile +++ b/stand/powerpc/Makefile @@ -6,10 +6,6 @@ SUBDIR.yes= boot1.chrp ofw -.if "${MACHINE_ARCH}" != "powerpc64le" -SUBDIR.${MK_FDT}+= uboot -.endif - .if "${MACHINE_ARCH}" == "powerpc64" SUBDIR.${MK_FDT}+= kboot .endif diff --git a/stand/powerpc/uboot/Makefile b/stand/powerpc/uboot/Makefile deleted file mode 100644 --- a/stand/powerpc/uboot/Makefile +++ /dev/null @@ -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 - -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 diff --git a/stand/powerpc/uboot/version b/stand/powerpc/uboot/version deleted file mode 100644 --- a/stand/powerpc/uboot/version +++ /dev/null @@ -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. diff --git a/stand/uboot.mk b/stand/uboot.mk deleted file mode 100644 --- a/stand/uboot.mk +++ /dev/null @@ -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 diff --git a/stand/uboot/Makefile b/stand/uboot/Makefile --- a/stand/uboot/Makefile +++ b/stand/uboot/Makefile @@ -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 -SUBDIR.yes= lib +.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc" + +.if ${MK_PIE} == "yes" +FILES+= ubldr ubldr.bin +OBJS+= ${SRCS:N*.h:R:S/$/.o/g} +.else +PROG= ubldr +.endif + +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 -SUBDIR.${MK_FDT}+=fdt +DPADD= ${LDR_INTERP} ${LIBFDT} ${LIBSA} +LDADD= ${LDR_INTERP} ${LIBFDT} ${LIBSA} -.include +.include diff --git a/stand/uboot/Makefile.inc b/stand/uboot/Makefile.inc deleted file mode 100644 --- a/stand/uboot/Makefile.inc +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -.include "../Makefile.inc" diff --git a/stand/uboot/lib/api_public.h b/stand/uboot/api_public.h rename from stand/uboot/lib/api_public.h rename to stand/uboot/api_public.h diff --git a/stand/uboot/arch/arm/Makefile.inc b/stand/uboot/arch/arm/Makefile.inc new file mode 100644 --- /dev/null +++ b/stand/uboot/arch/arm/Makefile.inc @@ -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 + diff --git a/stand/arm/uboot/conf.c b/stand/uboot/arch/arm/conf.c rename from stand/arm/uboot/conf.c rename to stand/uboot/arch/arm/conf.c diff --git a/stand/arm/uboot/ldscript.arm b/stand/uboot/arch/arm/ldscript.arm rename from stand/arm/uboot/ldscript.arm rename to stand/uboot/arch/arm/ldscript.arm diff --git a/stand/arm/uboot/start.S b/stand/uboot/arch/arm/start.S rename from stand/arm/uboot/start.S rename to stand/uboot/arch/arm/start.S diff --git a/stand/uboot/arch/powerpc/Makefile.inc b/stand/uboot/arch/powerpc/Makefile.inc new file mode 100644 --- /dev/null +++ b/stand/uboot/arch/powerpc/Makefile.inc @@ -0,0 +1,6 @@ + +SRCS+= start.S conf.c ppc64_elf_freebsd.c +.PATH: ${SYSDIR}/libkern +SRCS+= ucmpdi2.c + +MK_PIE= no diff --git a/stand/powerpc/uboot/conf.c b/stand/uboot/arch/powerpc/conf.c rename from stand/powerpc/uboot/conf.c rename to stand/uboot/arch/powerpc/conf.c diff --git a/stand/powerpc/uboot/ldscript.powerpc b/stand/uboot/arch/powerpc/ldscript.powerpc rename from stand/powerpc/uboot/ldscript.powerpc rename to stand/uboot/arch/powerpc/ldscript.powerpc diff --git a/stand/powerpc/uboot/ppc64_elf_freebsd.c b/stand/uboot/arch/powerpc/ppc64_elf_freebsd.c rename from stand/powerpc/uboot/ppc64_elf_freebsd.c rename to stand/uboot/arch/powerpc/ppc64_elf_freebsd.c diff --git a/stand/powerpc/uboot/start.S b/stand/uboot/arch/powerpc/start.S rename from stand/powerpc/uboot/start.S rename to stand/uboot/arch/powerpc/start.S diff --git a/stand/uboot/lib/copy.c b/stand/uboot/copy.c rename from stand/uboot/lib/copy.c rename to stand/uboot/copy.c diff --git a/stand/uboot/lib/devicename.c b/stand/uboot/devicename.c rename from stand/uboot/lib/devicename.c rename to stand/uboot/devicename.c diff --git a/stand/uboot/lib/elf_freebsd.c b/stand/uboot/elf_freebsd.c rename from stand/uboot/lib/elf_freebsd.c rename to stand/uboot/elf_freebsd.c diff --git a/stand/uboot/fdt/Makefile b/stand/uboot/fdt/Makefile deleted file mode 100644 --- a/stand/uboot/fdt/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -.include - -.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 diff --git a/stand/uboot/lib/glue.h b/stand/uboot/glue.h rename from stand/uboot/lib/glue.h rename to stand/uboot/glue.h diff --git a/stand/uboot/lib/glue.c b/stand/uboot/glue.c rename from stand/uboot/lib/glue.c rename to stand/uboot/glue.c diff --git a/stand/arm/uboot/help.uboot b/stand/uboot/help.uboot rename from stand/arm/uboot/help.uboot rename to stand/uboot/help.uboot diff --git a/stand/uboot/lib/Makefile b/stand/uboot/lib/Makefile deleted file mode 100644 --- a/stand/uboot/lib/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# $FreeBSD$ - -.include - -.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 diff --git a/stand/uboot/lib/libuboot.h b/stand/uboot/libuboot.h rename from stand/uboot/lib/libuboot.h rename to stand/uboot/libuboot.h diff --git a/stand/uboot/common/main.c b/stand/uboot/main.c rename from stand/uboot/common/main.c rename to stand/uboot/main.c diff --git a/stand/uboot/lib/net.c b/stand/uboot/net.c rename from stand/uboot/lib/net.c rename to stand/uboot/net.c diff --git a/stand/uboot/lib/reboot.c b/stand/uboot/reboot.c rename from stand/uboot/lib/reboot.c rename to stand/uboot/reboot.c diff --git a/stand/uboot/lib/time.c b/stand/uboot/time.c rename from stand/uboot/lib/time.c rename to stand/uboot/time.c diff --git a/stand/uboot/lib/console.c b/stand/uboot/uboot_console.c rename from stand/uboot/lib/console.c rename to stand/uboot/uboot_console.c diff --git a/stand/uboot/lib/disk.c b/stand/uboot/uboot_disk.c rename from stand/uboot/lib/disk.c rename to stand/uboot/uboot_disk.c diff --git a/stand/uboot/fdt/uboot_fdt.c b/stand/uboot/uboot_fdt.c rename from stand/uboot/fdt/uboot_fdt.c rename to stand/uboot/uboot_fdt.c diff --git a/stand/uboot/lib/module.c b/stand/uboot/uboot_module.c rename from stand/uboot/lib/module.c rename to stand/uboot/uboot_module.c diff --git a/stand/uboot/version b/stand/uboot/version new file mode 100644 --- /dev/null +++ b/stand/uboot/version @@ -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