Author: kevans
Date: Mon Feb 12 01:08:44 2018
New Revision: 329145
URL: https://svnweb.freebsd.org/changeset/base/329145

Log:
  MFC r325834,r325997,326502: Move sys/boot to stand/
  
  This is effectively a direct commit to stable/11, due to differences between
  stable/11 and head. Changes to DTS in sys/boot/fdt/dts were often
  accompanied by kernel changes. Many of these were also risc-v updates that
  likely had many more dependencies to MFC.
  
  Because of this, sys/boot/fdt/dts remains as-is while everything else in
  sys/boot relocates to stand/.
  
  r325834: Move sys/boot to stand. Fix all references to new location
  
  r325997: Remove empty directories.
  
  r326502: Document the sys/boot -> stand move in hier.7 and the top-level 
README.

Added:
  stable/11/stand/
  stable/11/stand/Makefile
     - copied unchanged from r329144, stable/11/sys/boot/Makefile
  stable/11/stand/Makefile.amd64
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.amd64
  stable/11/stand/Makefile.arm
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.arm
  stable/11/stand/Makefile.arm64
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.arm64
  stable/11/stand/Makefile.i386
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.i386
  stable/11/stand/Makefile.inc
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.inc
  stable/11/stand/Makefile.mips
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.mips
  stable/11/stand/Makefile.pc98
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.pc98
  stable/11/stand/Makefile.powerpc
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.powerpc
  stable/11/stand/Makefile.sparc64
     - copied unchanged from r329144, stable/11/sys/boot/Makefile.sparc64
  stable/11/stand/arm/
     - copied from r329144, stable/11/sys/boot/arm/
  stable/11/stand/arm64/
     - copied from r329144, stable/11/sys/boot/arm64/
  stable/11/stand/common/
     - copied from r329144, stable/11/sys/boot/common/
  stable/11/stand/defs.mk
     - copied, changed from r329144, stable/11/sys/boot/defs.mk
  stable/11/stand/efi/
     - copied from r329144, stable/11/sys/boot/efi/
  stable/11/stand/fdt/
  stable/11/stand/fdt.mk
     - copied unchanged from r329144, stable/11/sys/boot/fdt.mk
  stable/11/stand/fdt/Makefile
     - copied unchanged from r329144, stable/11/sys/boot/fdt/Makefile
  stable/11/stand/fdt/Makefile.depend
     - copied unchanged from r329144, stable/11/sys/boot/fdt/Makefile.depend
  stable/11/stand/fdt/fdt_loader_cmd.c
     - copied unchanged from r329144, stable/11/sys/boot/fdt/fdt_loader_cmd.c
  stable/11/stand/fdt/fdt_platform.h
     - copied unchanged from r329144, stable/11/sys/boot/fdt/fdt_platform.h
  stable/11/stand/fdt/help.fdt
     - copied unchanged from r329144, stable/11/sys/boot/fdt/help.fdt
  stable/11/stand/ficl/
     - copied from r329144, stable/11/sys/boot/ficl/
  stable/11/stand/ficl.mk
     - copied unchanged from r329144, stable/11/sys/boot/ficl.mk
  stable/11/stand/ficl32/
     - copied from r329144, stable/11/sys/boot/ficl32/
  stable/11/stand/forth/
     - copied from r329144, stable/11/sys/boot/forth/
  stable/11/stand/geli/
     - copied from r329144, stable/11/sys/boot/geli/
  stable/11/stand/i386/
     - copied from r329144, stable/11/sys/boot/i386/
  stable/11/stand/kshim/
     - copied from r329144, stable/11/sys/boot/kshim/
  stable/11/stand/libsa/
     - copied from r329144, stable/11/sys/boot/libsa/
  stable/11/stand/libsa32/
     - copied from r329144, stable/11/sys/boot/libsa32/
  stable/11/stand/loader.mk
     - copied unchanged from r329144, stable/11/sys/boot/loader.mk
  stable/11/stand/man/
     - copied from r329144, stable/11/sys/boot/man/
  stable/11/stand/mips/
     - copied from r329144, stable/11/sys/boot/mips/
  stable/11/stand/ofw/
     - copied from r329144, stable/11/sys/boot/ofw/
  stable/11/stand/pc98/
     - copied from r329144, stable/11/sys/boot/pc98/
  stable/11/stand/powerpc/
     - copied from r329144, stable/11/sys/boot/powerpc/
  stable/11/stand/sparc64/
     - copied from r329144, stable/11/sys/boot/sparc64/
  stable/11/stand/uboot/
     - copied from r329144, stable/11/sys/boot/uboot/
  stable/11/stand/uboot.mk
     - copied unchanged from r329144, stable/11/sys/boot/uboot.mk
  stable/11/stand/usb/
     - copied from r329144, stable/11/sys/boot/usb/
  stable/11/stand/userboot/
     - copied from r329144, stable/11/sys/boot/userboot/
  stable/11/stand/zfs/
     - copied from r329144, stable/11/sys/boot/zfs/
  stable/11/stand/zfs32/
     - copied from r329144, stable/11/sys/boot/zfs32/
Deleted:
  stable/11/stand/userboot/ficl/
  stable/11/stand/userboot/libstand/
  stable/11/stand/userboot/zfs/
  stable/11/sys/boot/Makefile
  stable/11/sys/boot/Makefile.amd64
  stable/11/sys/boot/Makefile.arm
  stable/11/sys/boot/Makefile.arm64
  stable/11/sys/boot/Makefile.i386
  stable/11/sys/boot/Makefile.inc
  stable/11/sys/boot/Makefile.mips
  stable/11/sys/boot/Makefile.pc98
  stable/11/sys/boot/Makefile.powerpc
  stable/11/sys/boot/Makefile.sparc64
  stable/11/sys/boot/arm/
  stable/11/sys/boot/arm64/
  stable/11/sys/boot/common/
  stable/11/sys/boot/defs.mk
  stable/11/sys/boot/efi/
  stable/11/sys/boot/fdt.mk
  stable/11/sys/boot/fdt/Makefile
  stable/11/sys/boot/fdt/Makefile.depend
  stable/11/sys/boot/fdt/fdt_loader_cmd.c
  stable/11/sys/boot/fdt/fdt_platform.h
  stable/11/sys/boot/fdt/help.fdt
  stable/11/sys/boot/ficl/
  stable/11/sys/boot/ficl.mk
  stable/11/sys/boot/ficl32/
  stable/11/sys/boot/forth/
  stable/11/sys/boot/geli/
  stable/11/sys/boot/i386/
  stable/11/sys/boot/kshim/
  stable/11/sys/boot/libsa/
  stable/11/sys/boot/libsa32/
  stable/11/sys/boot/loader.mk
  stable/11/sys/boot/man/
  stable/11/sys/boot/mips/
  stable/11/sys/boot/ofw/
  stable/11/sys/boot/pc98/
  stable/11/sys/boot/powerpc/
  stable/11/sys/boot/sparc64/
  stable/11/sys/boot/uboot/
  stable/11/sys/boot/uboot.mk
  stable/11/sys/boot/usb/
  stable/11/sys/boot/userboot/
  stable/11/sys/boot/zfs/
  stable/11/sys/boot/zfs32/
Modified:
  stable/11/MAINTAINERS
  stable/11/Makefile.inc1
  stable/11/README
  stable/11/lib/libefivar/Makefile
  stable/11/release/powerpc/generate-hfs.sh
  stable/11/release/tools/vmimage.subr
  stable/11/share/examples/bootforth/README
  stable/11/share/examples/etc/make.conf
  stable/11/share/man/man5/make.conf.5
  stable/11/share/man/man7/hier.7
  stable/11/share/man/man8/diskless.8
  stable/11/stand/forth/pnp.4th
  stable/11/stand/forth/support.4th
  stable/11/stand/i386/Makefile.inc
  stable/11/stand/pc98/Makefile.inc
  stable/11/sys/Makefile
  stable/11/sys/contrib/dev/acpica/acpica_prep.sh
  stable/11/tools/boot/universe.sh
  stable/11/tools/tools/bootparttest/Makefile
  stable/11/tools/tools/zfsboottest/Makefile
  stable/11/usr.sbin/bhyveload/Makefile
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/MAINTAINERS
==============================================================================
--- stable/11/MAINTAINERS       Sun Feb 11 22:38:16 2018        (r329144)
+++ stable/11/MAINTAINERS       Mon Feb 12 01:08:44 2018        (r329145)
@@ -87,7 +87,7 @@ sh(1)         jilles          Pre-commit review requested. 
This also 
                                compiled in as builtins.
 share/mk       imp, bapt, bdrewery, emaste, sjg        Make is hard.
 share/mk/*.test.mk     freebsd-testing,ngie (same list as share/mk too)        
Pre-commit review requested.
-sys/boot/forth         dteske  Pre-commit review requested.
+stand/forth            dteske  Pre-commit review requested.
 sys/compat/linuxkpi    hselasky        If in doubt, ask.
 sys/dev/e1000  erj     Pre-commit phabricator review requested.
 sys/dev/ixgbe  erj     Pre-commit phabricator review requested.

Modified: stable/11/Makefile.inc1
==============================================================================
--- stable/11/Makefile.inc1     Sun Feb 11 22:38:16 2018        (r329144)
+++ stable/11/Makefile.inc1     Mon Feb 12 01:08:44 2018        (r329145)
@@ -252,6 +252,9 @@ SUBDIR+=secure
 .if !defined(NO_SHARE)
 SUBDIR+=share
 .endif
+.if ${MK_BOOT} != "no"
+SUBDIR+=stand
+.endif
 SUBDIR+=sys usr.bin usr.sbin
 .if ${MK_TESTS} != "no"
 SUBDIR+=       tests
@@ -1903,7 +1906,7 @@ _clang_libs=      lib/clang
 _gcc=          gnu/usr.bin/cc
 .endif
 .if ${MK_USB} != "no"
-_usb_tools=    sys/boot/usb/tools
+_usb_tools=    stand/usb/tools
 .endif
 
 cross-tools: .MAKE .PHONY

Modified: stable/11/README
==============================================================================
--- stable/11/README    Sun Feb 11 22:38:16 2018        (r329144)
+++ stable/11/README    Mon Feb 12 01:08:44 2018        (r329145)
@@ -66,6 +66,8 @@ secure                Cryptographic libraries and commands.
 
 share          Shared resources.
 
+stand          Boot loader sources.
+
 sys            Kernel sources.
 
 tests          Regression tests which can be run by Kyua.  See tests/README

Modified: stable/11/lib/libefivar/Makefile
==============================================================================
--- stable/11/lib/libefivar/Makefile    Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/lib/libefivar/Makefile    Mon Feb 12 01:08:44 2018        
(r329145)
@@ -26,7 +26,7 @@
 
 .include <src.opts.mk>
 
-EFIBOOT=${SRCTOP}/sys/boot/efi
+EFIBOOT=${SRCTOP}/stand/efi
 EDK2INC=${SRCTOP}/sys/contrib/edk2/Include
 
 .PATH: ${EFIBOOT}/libefi

Modified: stable/11/release/powerpc/generate-hfs.sh
==============================================================================
--- stable/11/release/powerpc/generate-hfs.sh   Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/release/powerpc/generate-hfs.sh   Mon Feb 12 01:08:44 2018        
(r329145)
@@ -32,7 +32,7 @@ cat > bootinfo.txt << EOF
 <CHRP-BOOT>
 <DESCRIPTION>FreeBSD/powerpc bootloader</DESCRIPTION>
 <OS-NAME>FreeBSD</OS-NAME>
-<VERSION> $FreeBSD: head/sys/boot/powerpc/boot1.chrp/bootinfo.txt 184490 
2008-10
+<VERSION> $FreeBSD: head/stand/powerpc/boot1.chrp/bootinfo.txt 184490 2008-10
 -31 00:52:31Z nwhitehorn $ </VERSION>
 
 <COMPATIBLE>

Modified: stable/11/release/tools/vmimage.subr
==============================================================================
--- stable/11/release/tools/vmimage.subr        Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/release/tools/vmimage.subr        Mon Feb 12 01:08:44 2018        
(r329145)
@@ -17,9 +17,9 @@ write_partition_layout() {
        _OBJDIR="$(make -C ${WORLDDIR} -V .OBJDIR)"
        _OBJDIR="$(realpath ${_OBJDIR})"
        if [ -d "${_OBJDIR%%/usr/src}/${TARGET}.${TARGET_ARCH}" ]; then
-               
BOOTFILES="/${_OBJDIR%%/usr/src}/${TARGET}.${TARGET_ARCH}/usr/src/sys/boot"
+               
BOOTFILES="/${_OBJDIR%%/usr/src}/${TARGET}.${TARGET_ARCH}/usr/src/stand"
        else
-               BOOTFILES="/${_OBJDIR}/sys/boot"
+               BOOTFILES="/${_OBJDIR}/stand"
        fi
 
        case "${TARGET}:${TARGET_ARCH}" in

Modified: stable/11/share/examples/bootforth/README
==============================================================================
--- stable/11/share/examples/bootforth/README   Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/share/examples/bootforth/README   Mon Feb 12 01:08:44 2018        
(r329145)
@@ -1,6 +1,6 @@
 Here you can find some simple examples how to use BootFORTH (part of the
 new bootloader) together with terminal emulation code (available when
-compiling /sys/boot/i386/libi386 with -DTERM_EMU).
+compiling /stand/i386/libi386 with -DTERM_EMU).
 
 Normally, you can place the files in /boot as they are here, and they will be
 automatically loaded by /boot/loader. You must choose between boot.4th or

Modified: stable/11/share/examples/etc/make.conf
==============================================================================
--- stable/11/share/examples/etc/make.conf      Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/share/examples/etc/make.conf      Mon Feb 12 01:08:44 2018        
(r329145)
@@ -171,7 +171,7 @@
 #BOOT_COMCONSOLE_SPEED=        115200
 #
 # By default the 'pxeboot' loader retrieves the kernel via NFS.  Defining
-# this and recompiling /usr/src/sys/boot will cause it to retrieve the kernel
+# this and recompiling /usr/src/stand will cause it to retrieve the kernel
 # via TFTP.  This allows pxeboot to load a custom BOOTP diskless kernel yet
 # still mount the server's '/' (i.e. rather than load the server's kernel).
 #

Modified: stable/11/share/man/man5/make.conf.5
==============================================================================
--- stable/11/share/man/man5/make.conf.5        Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/share/man/man5/make.conf.5        Mon Feb 12 01:08:44 2018        
(r329145)
@@ -369,7 +369,7 @@ By default the
 .Xr pxeboot 8
 loader retrieves the kernel via NFS.
 Defining this and recompiling
-.Pa /usr/src/sys/boot
+.Pa /usr/src/stand
 will cause it to retrieve the kernel via TFTP.
 This allows
 .Xr pxeboot 8
@@ -380,7 +380,7 @@ rather than load the server's kernel.
 .It Va LOADER_FIREWIRE_SUPPORT
 .Pq Vt bool
 Defining this and recompiling
-.Pa /usr/src/sys/boot/i386
+.Pa /usr/src/stand/i386
 will add
 .Xr dcons 4
 console driver to

Modified: stable/11/share/man/man7/hier.7
==============================================================================
--- stable/11/share/man/man7/hier.7     Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/share/man/man7/hier.7     Mon Feb 12 01:08:44 2018        
(r329145)
@@ -28,7 +28,7 @@
 .\"    @(#)hier.7      8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd January 15, 2018
+.Dd February 11, 2018
 .Dt HIER 7
 .Os
 .Sh NAME
@@ -696,6 +696,8 @@ build directory for files in
 .It Pa share/
 source for files in
 .Pa /usr/share
+.It Pa stand/
+boot loader source code
 .It Pa sys/
 kernel source code
 .Bl -tag -width "opencrypto/" -compact

Modified: stable/11/share/man/man8/diskless.8
==============================================================================
--- stable/11/share/man/man8/diskless.8 Sun Feb 11 22:38:16 2018        
(r329144)
+++ stable/11/share/man/man8/diskless.8 Mon Feb 12 01:08:44 2018        
(r329145)
@@ -124,7 +124,7 @@ the
 .Nm
 machine, which may not be what you want to have happen.
 .Bd -literal -offset indent
-cd /usr/src/sys/boot/i386
+cd /usr/src/stand/i386
 make clean; make; make install
 cp /boot/pxeboot /tftpdir/
 .Ed

Copied: stable/11/stand/Makefile (from r329144, stable/11/sys/boot/Makefile)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile    Mon Feb 12 01:08:44 2018        (r329145, copy 
of r329144, stable/11/sys/boot/Makefile)
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+.include <src.opts.mk>
+
+SUBDIR+=               libsa
+.if ${MK_FORTH} != "no"
+# Build the add-in FORTH interpreter.
+SUBDIR+=               ficl
+SUBDIR+=               forth
+.endif
+
+SUBDIR+=               man
+
+.include <bsd.arch.inc.mk>
+
+.if exists(${.CURDIR}/${MACHINE}/.)
+SUBDIR+=               ${MACHINE}
+.endif
+
+.include <bsd.subdir.mk>

Copied: stable/11/stand/Makefile.amd64 (from r329144, 
stable/11/sys/boot/Makefile.amd64)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.amd64      Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.amd64)
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+SUBDIR+=               libsa32
+.if ${MK_ZFS} != "no"
+SUBDIR+=               zfs zfs32
+.endif
+.if ${MK_FORTH} != "no"
+SUBDIR+=               ficl32
+.endif
+
+SUBDIR+=               efi
+SUBDIR+=               userboot
+
+.if ${LOADER_GELI_SUPPORT:Uyes} == "yes"
+SUBDIR+=               geli
+.endif
+
+SUBDIR+=               i386

Copied: stable/11/stand/Makefile.arm (from r329144, 
stable/11/sys/boot/Makefile.arm)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.arm        Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.arm)
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.if ${MK_FDT} != "no"
+SUBDIR+=               fdt
+.endif
+.if ${MK_ZFS} != "no"
+SUBDIR+=               zfs
+.endif
+
+SUBDIR+=               efi uboot

Copied: stable/11/stand/Makefile.arm64 (from r329144, 
stable/11/sys/boot/Makefile.arm64)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.arm64      Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.arm64)
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.if ${MK_FDT} != "no"
+SUBDIR+=               fdt
+.endif
+.if ${MK_ZFS} != "no"
+SUBDIR+=               zfs
+.endif
+
+SUBDIR+=               efi

Copied: stable/11/stand/Makefile.i386 (from r329144, 
stable/11/sys/boot/Makefile.i386)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.i386       Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.i386)
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.if ${LOADER_GELI_SUPPORT:Uyes} == "yes"
+SUBDIR+=               geli
+.endif
+.if ${MK_ZFS} != "no"
+SUBDIR+=               zfs
+.endif
+
+SUBDIR+=               efi

Copied: stable/11/stand/Makefile.inc (from r329144, 
stable/11/sys/boot/Makefile.inc)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.inc        Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.inc)
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+.include "defs.mk"
+
+.if !defined(__BOOT_MAKEFILE_INC__)
+__BOOT_MAKEFILE_INC__=${MFILE}
+
+CFLAGS+=-I${SASRC}
+
+SSP_CFLAGS=
+
+.if ${MACHINE_CPUARCH} == "arm"
+# Do not generate movt/movw, because the relocation fixup for them does not
+# translate to the -Bsymbolic -pie format required by self_reloc() in 
loader(8).
+# Also, the fpu is not available in a standalone environment.
+.if ${COMPILER_VERSION} < 30800
+CFLAGS.clang+= -mllvm -arm-use-movt=0
+.else
+CFLAGS.clang+= -mno-movt
+.endif
+CFLAGS.clang+=  -mfpu=none
+.endif
+
+# The boot loader build uses dd status=none, where possible, for reproducible
+# build output (since performance varies from run to run). Trouble is that
+# option was recently (10.3) added to FreeBSD and is non-standard. Only use it
+# when this test succeeds rather than require dd to be a bootstrap tool.
+DD_NOSTATUS!=(dd status=none count=0 2> /dev/null && echo status=none) || true
+DD=dd ${DD_NOSTATUS}
+
+.if ${MK_LOADER_FORCE_LE} != "no"
+.if ${MACHINE_ARCH} == "powerpc64"
+CFLAGS+=       -mlittle-endian
+.endif
+.endif
+
+.endif

Copied: stable/11/stand/Makefile.mips (from r329144, 
stable/11/sys/boot/Makefile.mips)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.mips       Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.mips)
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.if ${MK_FDT} != "no"
+SUBDIR+=               fdt
+.endif
+
+SUBDIR+=               uboot

Copied: stable/11/stand/Makefile.pc98 (from r329144, 
stable/11/sys/boot/Makefile.pc98)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.pc98       Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.pc98)
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+SUBDIR+=               libstand32

Copied: stable/11/stand/Makefile.powerpc (from r329144, 
stable/11/sys/boot/Makefile.powerpc)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.powerpc    Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.powerpc)
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.if ${MK_FDT} != "no"
+SUBDIR+=               fdt
+.endif
+
+SUBDIR+=               ofw
+SUBDIR+=               uboot

Copied: stable/11/stand/Makefile.sparc64 (from r329144, 
stable/11/sys/boot/Makefile.sparc64)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/Makefile.sparc64    Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/Makefile.sparc64)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+SUBDIR+=               ofw
+.if ${MK_ZFS} != "no"
+SUBDIR+=               zfs
+.endif

Copied and modified: stable/11/stand/defs.mk (from r329144, 
stable/11/sys/boot/defs.mk)
==============================================================================
--- stable/11/sys/boot/defs.mk  Sun Feb 11 22:38:16 2018        (r329144, copy 
source)
+++ stable/11/stand/defs.mk     Mon Feb 12 01:08:44 2018        (r329145)
@@ -5,7 +5,7 @@
 .if !defined(__BOOT_DEFS_MK__)
 __BOOT_DEFS_MK__=${MFILE}
 
-BOOTSRC=       ${SRCTOP}/sys/boot
+BOOTSRC=       ${SRCTOP}/stand
 EFISRC=                ${BOOTSRC}/efi
 EFIINC=                ${EFISRC}/include
 EFIINCMD=      ${EFIINC}/${MACHINE}
@@ -17,7 +17,7 @@ SYSDIR=               ${SRCTOP}/sys
 UBOOTSRC=      ${BOOTSRC}/uboot
 ZFSSRC=                ${BOOTSRC}/zfs
 
-BOOTOBJ=       ${OBJTOP}/sys/boot
+BOOTOBJ=       ${OBJTOP}/stand
 
 # BINDIR is where we install
 BINDIR?=       /boot

Copied: stable/11/stand/fdt.mk (from r329144, stable/11/sys/boot/fdt.mk)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/fdt.mk      Mon Feb 12 01:08:44 2018        (r329145, copy 
of r329144, stable/11/sys/boot/fdt.mk)
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.if ${MK_FDT} == "yes"
+CFLAGS+=       -I${FDTSRC}
+CFLAGS+=       -I${BOOTOBJ}/fdt
+CFLAGS+=       -I${SYSDIR}/contrib/libfdt
+CFLAGS+=       -DLOADER_FDT_SUPPORT
+LIBFDT=                ${BOOTOBJ}/fdt/libfdt.a
+.endif

Copied: stable/11/stand/fdt/Makefile (from r329144, 
stable/11/sys/boot/fdt/Makefile)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/fdt/Makefile        Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/fdt/Makefile)
@@ -0,0 +1,28 @@
+# $FreeBSD$
+
+.include <bsd.init.mk>
+
+.PATH:         ${SYSDIR}/contrib/libfdt/
+
+LIB=           fdt
+INTERNALLIB=
+
+# Vendor sources of libfdt.
+SRCS+=         fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c \
+               fdt_empty_tree.c fdt_addresses.c fdt_overlay.c
+
+# Loader's fdt commands extension sources.
+SRCS+=         fdt_loader_cmd.c
+
+CFLAGS+=       -I${SYSDIR}/contrib/libfdt/ -I${LDRSRC}
+
+CFLAGS+=       -ffreestanding
+
+.if ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_CPUARCH} == "arm" || 
${MACHINE_CPUARCH} == "mips"
+CFLAGS+=       -msoft-float
+.endif
+
+CFLAGS+=       -Wformat -Wall
+
+.include <bsd.stand.mk>
+.include <bsd.lib.mk>

Copied: stable/11/stand/fdt/Makefile.depend (from r329144, 
stable/11/sys/boot/fdt/Makefile.depend)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/fdt/Makefile.depend Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/fdt/Makefile.depend)
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+       include \
+       include/xlocale \
+       lib/libstand \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif

Copied: stable/11/stand/fdt/fdt_loader_cmd.c (from r329144, 
stable/11/sys/boot/fdt/fdt_loader_cmd.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/stand/fdt/fdt_loader_cmd.c        Mon Feb 12 01:08:44 2018        
(r329145, copy of r329144, stable/11/sys/boot/fdt/fdt_loader_cmd.c)
@@ -0,0 +1,1796 @@
+/*-
+ * Copyright (c) 2009-2010 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Semihalf under sponsorship from
+ * the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <stand.h>
+#include <libfdt.h>
+#include <fdt.h>
+#include <sys/param.h>
+#include <sys/linker.h>
+#include <machine/elf.h>
+
+#include "bootstrap.h"
+#include "fdt_platform.h"
+
+#ifdef DEBUG
+#define debugf(fmt, args...) do { printf("%s(): ", __func__);  \
+    printf(fmt,##args); } while (0)
+#else
+#define debugf(fmt, args...)
+#endif
+
+#define FDT_CWD_LEN    256
+#define FDT_MAX_DEPTH  12
+
+#define FDT_PROP_SEP   " = "
+
+#define COPYOUT(s,d,l) archsw.arch_copyout(s, d, l)
+#define COPYIN(s,d,l)  archsw.arch_copyin(s, d, l)
+
+#define FDT_STATIC_DTB_SYMBOL  "fdt_static_dtb"
+
+#define        CMD_REQUIRES_BLOB       0x01
+
+/* Location of FDT yet to be loaded. */
+/* This may be in read-only memory, so can't be manipulated directly. */
+static struct fdt_header *fdt_to_load = NULL;
+/* Location of FDT on heap. */
+/* This is the copy we actually manipulate. */
+static struct fdt_header *fdtp = NULL;
+/* Size of FDT blob */
+static size_t fdtp_size = 0;
+/* Location of FDT in kernel or module. */
+/* This won't be set if FDT is loaded from disk or memory. */
+/* If it is set, we'll update it when fdt_copy() gets called. */
+static vm_offset_t fdtp_va = 0;
+
+static int fdt_load_dtb(vm_offset_t va);
+static void fdt_print_overlay_load_error(int err, const char *filename);
+
+static int fdt_cmd_nyi(int argc, char *argv[]);
+static int fdt_load_dtb_overlays_string(const char * filenames);
+
+static int fdt_cmd_addr(int argc, char *argv[]);
+static int fdt_cmd_mkprop(int argc, char *argv[]);
+static int fdt_cmd_cd(int argc, char *argv[]);
+static int fdt_cmd_hdr(int argc, char *argv[]);
+static int fdt_cmd_ls(int argc, char *argv[]);
+static int fdt_cmd_prop(int argc, char *argv[]);
+static int fdt_cmd_pwd(int argc, char *argv[]);
+static int fdt_cmd_rm(int argc, char *argv[]);
+static int fdt_cmd_mknode(int argc, char *argv[]);
+static int fdt_cmd_mres(int argc, char *argv[]);
+
+typedef int cmdf_t(int, char *[]);
+
+struct cmdtab {
+       const char      *name;
+       cmdf_t          *handler;
+       int             flags;
+};
+
+static const struct cmdtab commands[] = {
+       { "addr", &fdt_cmd_addr,        0 },
+       { "alias", &fdt_cmd_nyi,        0 },
+       { "cd", &fdt_cmd_cd,            CMD_REQUIRES_BLOB },
+       { "header", &fdt_cmd_hdr,       CMD_REQUIRES_BLOB },
+       { "ls", &fdt_cmd_ls,            CMD_REQUIRES_BLOB },
+       { "mknode", &fdt_cmd_mknode,    CMD_REQUIRES_BLOB },
+       { "mkprop", &fdt_cmd_mkprop,    CMD_REQUIRES_BLOB },
+       { "mres", &fdt_cmd_mres,        CMD_REQUIRES_BLOB },
+       { "prop", &fdt_cmd_prop,        CMD_REQUIRES_BLOB },
+       { "pwd", &fdt_cmd_pwd,          CMD_REQUIRES_BLOB },
+       { "rm", &fdt_cmd_rm,            CMD_REQUIRES_BLOB },
+       { NULL, NULL }
+};
+
+static char cwd[FDT_CWD_LEN] = "/";
+
+static vm_offset_t
+fdt_find_static_dtb()
+{
+       Elf_Ehdr *ehdr;
+       Elf_Shdr *shdr;
+       Elf_Sym sym;
+       vm_offset_t strtab, symtab, fdt_start;
+       uint64_t offs;
+       struct preloaded_file *kfp;
+       struct file_metadata *md;
+       char *strp;
+       int i, sym_count;
+
+       debugf("fdt_find_static_dtb()\n");
+
+       sym_count = symtab = strtab = 0;
+       strp = NULL;
+
+       offs = __elfN(relocation_offset);
+
+       kfp = file_findfile(NULL, NULL);
+       if (kfp == NULL)
+               return (0);
+
+       /* Locate the dynamic symbols and strtab. */
+       md = file_findmetadata(kfp, MODINFOMD_ELFHDR);
+       if (md == NULL)
+               return (0);
+       ehdr = (Elf_Ehdr *)md->md_data;
+
+       md = file_findmetadata(kfp, MODINFOMD_SHDR);
+       if (md == NULL)
+               return (0);
+       shdr = (Elf_Shdr *)md->md_data;
+
+       for (i = 0; i < ehdr->e_shnum; ++i) {
+               if (shdr[i].sh_type == SHT_DYNSYM && symtab == 0) {
+                       symtab = shdr[i].sh_addr + offs;
+                       sym_count = shdr[i].sh_size / sizeof(Elf_Sym);
+               } else if (shdr[i].sh_type == SHT_STRTAB && strtab == 0) {
+                       strtab = shdr[i].sh_addr + offs;
+               }
+       }
+
+       /*
+        * The most efficient way to find a symbol would be to calculate a
+        * hash, find proper bucket and chain, and thus find a symbol.
+        * However, that would involve code duplication (e.g. for hash
+        * function). So we're using simpler and a bit slower way: we're
+        * iterating through symbols, searching for the one which name is
+        * 'equal' to 'fdt_static_dtb'. To speed up the process a little bit,
+        * we are eliminating symbols type of which is not STT_NOTYPE, or(and)
+        * those which binding attribute is not STB_GLOBAL.
+        */
+       fdt_start = 0;
+       while (sym_count > 0 && fdt_start == 0) {
+               COPYOUT(symtab, &sym, sizeof(sym));
+               symtab += sizeof(sym);
+               --sym_count;
+               if (ELF_ST_BIND(sym.st_info) != STB_GLOBAL ||
+                   ELF_ST_TYPE(sym.st_info) != STT_NOTYPE)
+                       continue;
+               strp = strdupout(strtab + sym.st_name);
+               if (strcmp(strp, FDT_STATIC_DTB_SYMBOL) == 0)
+                       fdt_start = (vm_offset_t)sym.st_value + offs;
+               free(strp);
+       }
+       return (fdt_start);
+}
+
+static int
+fdt_load_dtb(vm_offset_t va)
+{
+       struct fdt_header header;
+       int err;
+
+       debugf("fdt_load_dtb(0x%08jx)\n", (uintmax_t)va);
+
+       COPYOUT(va, &header, sizeof(header));
+       err = fdt_check_header(&header);
+       if (err < 0) {
+               if (err == -FDT_ERR_BADVERSION) {
+                       snprintf(command_errbuf, sizeof(command_errbuf),
+                           "incompatible blob version: %d, should be: %d",
+                           fdt_version(fdtp), FDT_LAST_SUPPORTED_VERSION);
+               } else {
+                       snprintf(command_errbuf, sizeof(command_errbuf),
+                           "error validating blob: %s", fdt_strerror(err));
+               }
+               return (1);
+       }
+
+       /*
+        * Release previous blob
+        */
+       if (fdtp)
+               free(fdtp);
+
+       fdtp_size = fdt_totalsize(&header);
+       fdtp = malloc(fdtp_size);
+
+       if (fdtp == NULL) {
+               command_errmsg = "can't allocate memory for device tree copy";
+               return (1);
+       }
+
+       fdtp_va = va;
+       COPYOUT(va, fdtp, fdtp_size);
+       debugf("DTB blob found at 0x%jx, size: 0x%jx\n", (uintmax_t)va, 
(uintmax_t)fdtp_size);
+
+       return (0);
+}
+
+int
+fdt_load_dtb_addr(struct fdt_header *header)
+{
+       int err;
+
+       debugf("fdt_load_dtb_addr(%p)\n", header);
+
+       fdtp_size = fdt_totalsize(header);
+       err = fdt_check_header(header);
+       if (err < 0) {
+               snprintf(command_errbuf, sizeof(command_errbuf),
+                   "error validating blob: %s", fdt_strerror(err));
+               return (err);
+       }
+       free(fdtp);
+       if ((fdtp = malloc(fdtp_size)) == NULL) {
+               command_errmsg = "can't allocate memory for device tree copy";
+               return (1);
+       }
+
+       fdtp_va = 0; // Don't write this back into module or kernel.
+       bcopy(header, fdtp, fdtp_size);
+       return (0);
+}
+
+int
+fdt_load_dtb_file(const char * filename)
+{
+       struct preloaded_file *bfp, *oldbfp;
+       int err;
+
+       debugf("fdt_load_dtb_file(%s)\n", filename);
+
+       oldbfp = file_findfile(NULL, "dtb");
+
+       /* Attempt to load and validate a new dtb from a file. */
+       if ((bfp = file_loadraw(filename, "dtb", 1)) == NULL) {
+               snprintf(command_errbuf, sizeof(command_errbuf),
+                   "failed to load file '%s'", filename);
+               return (1);
+       }
+       if ((err = fdt_load_dtb(bfp->f_addr)) != 0) {
+               file_discard(bfp);
+               return (err);
+       }
+
+       /* A new dtb was validated, discard any previous file. */
+       if (oldbfp)
+               file_discard(oldbfp);
+       return (0);
+}
+
+static int
+fdt_load_dtb_overlay(const char * filename)
+{
+       struct preloaded_file *bfp;
+       struct fdt_header header;
+       int err;
+
+       debugf("fdt_load_dtb_overlay(%s)\n", filename);
+
+       /* Attempt to load and validate a new dtb from a file. FDT_ERR_NOTFOUND
+        * is normally a libfdt error code, but libfdt would actually return
+        * -FDT_ERR_NOTFOUND. We re-purpose the error code here to convey a
+        * similar meaning: the file itself was not found, which can still be
+        * considered an error dealing with FDT pieces.
+        */
+       if ((bfp = file_loadraw(filename, "dtbo", 1)) == NULL)
+               return (FDT_ERR_NOTFOUND);
+
+       COPYOUT(bfp->f_addr, &header, sizeof(header));
+       err = fdt_check_header(&header);
+
+       if (err < 0) {
+               file_discard(bfp);
+               return (err);
+       }
+
+       return (0);
+}
+
+static void
+fdt_print_overlay_load_error(int err, const char *filename)
+{
+
+       switch (err) {
+               case FDT_ERR_NOTFOUND:
+                       printf("%s: failed to load file\n", filename);
+                       break;
+               case -FDT_ERR_BADVERSION:
+                       printf("%s: incompatible blob version: %d, should be: 
%d\n",
+                           filename, fdt_version(fdtp),
+                           FDT_LAST_SUPPORTED_VERSION);
+                       break;
+               default:
+                       /* libfdt errs are negative */
+                       if (err < 0)
+                               printf("%s: error validating blob: %s\n",
+                                   filename, fdt_strerror(err));
+                       else
+                               printf("%s: unknown load error\n", filename);
+                       break;
+       }
+}
+
+static int
+fdt_load_dtb_overlays_string(const char * filenames)
+{
+       char *names;
+       char *name, *name_ext;
+       char *comaptr;
+       int err, namesz;
+
+       debugf("fdt_load_dtb_overlays_string(%s)\n", filenames);
+
+       names = strdup(filenames);
+       if (names == NULL)
+               return (1);
+       name = names;
+       do {
+               comaptr = strchr(name, ',');
+               if (comaptr)
+                       *comaptr = '\0';
+               err = fdt_load_dtb_overlay(name);
+               if (err == FDT_ERR_NOTFOUND) {
+                       /* Allocate enough to append ".dtbo" */
+                       namesz = strlen(name) + 6;
+                       name_ext = malloc(namesz);
+                       if (name_ext == NULL) {
+                               fdt_print_overlay_load_error(err, name);
+                               name = comaptr + 1;
+                               continue;
+                       }
+                       snprintf(name_ext, namesz, "%s.dtbo", name);
+                       err = fdt_load_dtb_overlay(name_ext);
+                       free(name_ext);
+               }
+               /* Catch error with either initial load or fallback load */
+               if (err != 0)
+                       fdt_print_overlay_load_error(err, name);
+               name = comaptr + 1;
+       } while(comaptr);
+
+       free(names);
+       return (0);
+}
+
+void
+fdt_apply_overlays()
+{
+       struct preloaded_file *fp;
+       size_t max_overlay_size, next_fdtp_size;
+       size_t current_fdtp_size;
+       void *current_fdtp;
+       void *next_fdtp;
+       void *overlay;
+       int rv;
+
+       if ((fdtp == NULL) || (fdtp_size == 0))
+               return;
+
+       max_overlay_size = 0;
+       for (fp = file_findfile(NULL, "dtbo"); fp != NULL; fp = fp->f_next) {
+               if (max_overlay_size < fp->f_size)
+                       max_overlay_size = fp->f_size;
+       }
+
+       /* Nothing to apply */
+       if (max_overlay_size == 0)
+               return;
+
+       overlay = malloc(max_overlay_size);
+       if (overlay == NULL) {
+               printf("failed to allocate memory for DTB blob with 
overlays\n");
+               return;
+       }
+       current_fdtp = fdtp;
+       current_fdtp_size = fdtp_size;
+       for (fp = file_findfile(NULL, "dtbo"); fp != NULL; fp = fp->f_next) {
+               printf("applying DTB overlay '%s'\n", fp->f_name);
+               next_fdtp_size = current_fdtp_size + fp->f_size;
+               next_fdtp = malloc(next_fdtp_size);
+               if (next_fdtp == NULL) {
+                       /*
+                        * Output warning, then move on to applying other
+                        * overlays in case this one is simply too large.
+                        */
+                       printf("failed to allocate memory for overlay base\n");
+                       continue;
+               }
+               rv = fdt_open_into(current_fdtp, next_fdtp, next_fdtp_size);
+               if (rv != 0) {
+                       free(next_fdtp);
+                       printf("failed to open base dtb into overlay base\n");
+                       continue;
+               }
+               COPYOUT(fp->f_addr, overlay, fp->f_size);
+               /* Both overlay and next_fdtp may be modified in place */
+               rv = fdt_overlay_apply(next_fdtp, overlay);
+               if (rv == 0) {
+                       /* Rotate next -> current */
+                       if (current_fdtp != fdtp)
+                               free(current_fdtp);
+                       current_fdtp = next_fdtp;
+                       current_fdtp_size = next_fdtp_size;
+               } else {
+                       /*
+                        * Assume here that the base we tried to apply on is
+                        * either trashed or in an inconsistent state. Trying to
+                        * load it might work, but it's better to discard it and
+                        * play it safe. */
+                       free(next_fdtp);
+                       printf("failed to apply overlay: %s\n",
+                           fdt_strerror(rv));
+               }
+       }
+       /* We could have failed to apply all overlays; then we do nothing */
+       if (current_fdtp != fdtp) {
+               free(fdtp);
+               fdtp = current_fdtp;
+               fdtp_size = current_fdtp_size;
+       }
+       free(overlay);
+}
+
+int
+fdt_setup_fdtp()
+{
+       struct preloaded_file *bfp;
+       vm_offset_t va;
+       
+       debugf("fdt_setup_fdtp()\n");
+
+       /* If we already loaded a file, use it. */
+       if ((bfp = file_findfile(NULL, "dtb")) != NULL) {
+               if (fdt_load_dtb(bfp->f_addr) == 0) {
+                       printf("Using DTB from loaded file '%s'.\n", 
+                           bfp->f_name);
+                       return (0);
+               }
+       }
+
+       /* If we were given the address of a valid blob in memory, use it. */
+       if (fdt_to_load != NULL) {
+               if (fdt_load_dtb_addr(fdt_to_load) == 0) {
+                       printf("Using DTB from memory address %p.\n",
+                           fdt_to_load);
+                       return (0);
+               }
+       }
+
+       if (fdt_platform_load_dtb() == 0)
+               return (0);
+
+       /* If there is a dtb compiled into the kernel, use it. */
+       if ((va = fdt_find_static_dtb()) != 0) {
+               if (fdt_load_dtb(va) == 0) {
+                       printf("Using DTB compiled into kernel.\n");
+                       return (0);
+               }
+       }
+       
+       command_errmsg = "No device tree blob found!\n";
+       return (1);
+}
+
+#define fdt_strtovect(str, cellbuf, lim, cellsize) _fdt_strtovect((str), \
+    (cellbuf), (lim), (cellsize), 0);
+
+/* Force using base 16 */
+#define fdt_strtovectx(str, cellbuf, lim, cellsize) _fdt_strtovect((str), \
+    (cellbuf), (lim), (cellsize), 16);
+
+static int
+_fdt_strtovect(const char *str, void *cellbuf, int lim, unsigned char cellsize,
+    uint8_t base)
+{
+       const char *buf = str;
+       const char *end = str + strlen(str) - 2;
+       uint32_t *u32buf = NULL;
+       uint8_t *u8buf = NULL;
+       int cnt = 0;
+
+       if (cellsize == sizeof(uint32_t))
+               u32buf = (uint32_t *)cellbuf;
+       else
+               u8buf = (uint8_t *)cellbuf;
+
+       if (lim == 0)
+               return (0);
+
+       while (buf < end) {
+
+               /* Skip white whitespace(s)/separators */
+               while (!isxdigit(*buf) && buf < end)
+                       buf++;
+
+               if (u32buf != NULL)
+                       u32buf[cnt] =
+                           cpu_to_fdt32((uint32_t)strtol(buf, NULL, base));
+
+               else
+                       u8buf[cnt] = (uint8_t)strtol(buf, NULL, base);
+
+               if (cnt + 1 <= lim - 1)
+                       cnt++;
+               else
+                       break;
+               buf++;
+               /* Find another number */
+               while ((isxdigit(*buf) || *buf == 'x') && buf < end)
+                       buf++;
+       }
+       return (cnt);
+}
+
+void
+fdt_fixup_ethernet(const char *str, char *ethstr, int len)
+{
+       uint8_t tmp_addr[6];
+
+       /* Convert macaddr string into a vector of uints */
+       fdt_strtovectx(str, &tmp_addr, 6, sizeof(uint8_t));
+       /* Set actual property to a value from vect */
+       fdt_setprop(fdtp, fdt_path_offset(fdtp, ethstr),
+           "local-mac-address", &tmp_addr, 6 * sizeof(uint8_t));
+}
+
+void
+fdt_fixup_cpubusfreqs(unsigned long cpufreq, unsigned long busfreq)
+{
+       int lo, o = 0, o2, maxo = 0, depth;
+       const uint32_t zero = 0;
+
+       /* We want to modify every subnode of /cpus */
+       o = fdt_path_offset(fdtp, "/cpus");
+       if (o < 0)
+               return;
+
+       /* maxo should contain offset of node next to /cpus */
+       depth = 0;
+       maxo = o;
+       while (depth != -1)
+               maxo = fdt_next_node(fdtp, maxo, &depth);
+
+       /* Find CPU frequency properties */
+       o = fdt_node_offset_by_prop_value(fdtp, o, "clock-frequency",
+           &zero, sizeof(uint32_t));
+
+       o2 = fdt_node_offset_by_prop_value(fdtp, o, "bus-frequency", &zero,
+           sizeof(uint32_t));
+
+       lo = MIN(o, o2);
+
+       while (o != -FDT_ERR_NOTFOUND && o2 != -FDT_ERR_NOTFOUND) {
+
+               o = fdt_node_offset_by_prop_value(fdtp, lo,
+                   "clock-frequency", &zero, sizeof(uint32_t));
+
+               o2 = fdt_node_offset_by_prop_value(fdtp, lo, "bus-frequency",
+                   &zero, sizeof(uint32_t));
+
+               /* We're only interested in /cpus subnode(s) */
+               if (lo > maxo)
+                       break;
+
+               fdt_setprop_inplace_cell(fdtp, lo, "clock-frequency",
+                   (uint32_t)cpufreq);
+
+               fdt_setprop_inplace_cell(fdtp, lo, "bus-frequency",
+                   (uint32_t)busfreq);
+
+               lo = MIN(o, o2);
+       }
+}
+
+#ifdef notyet
+static int

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to