Add support for the fdt command in the EFI loader

Reviewed by: Ed Maste <emaste@freebsd.org>
Add support to get the DTB from UEFI

Reviewed By: Ed Maste <emaste@freebsd.org>
Disable modules that fail to build on arm64
Use aarch64 binutils package path
Load full DTB address in ARM64 loader instead of just offset

This alignes DTB loading with other architectures as well as
simplifies DTB address processing in machdep.c
Allow for using static (embedded) DTB in ARM64 kernel

When there is no DTB passed by the loader, try to use
the built-in one that might be present when FDT_DTB_STATIC
option is used.
Fix ARM64 pmap.c compilation when INVARIANTS are enabled

Some minor improvements to make KASSERTs work and more
specific about errors.
Add missing pmap_page_is_mapped() used in KASSERTs in
swap_pager.c, vm_object.c, vm_page.c, vm_pageout.c and vnode_pager.c
Fix typo in address space length
Fix mismerge from SVN r274427
Add cache maintenance for ARM64 loader and clean/inv cache in elf64_exec()

It is required to clean all of the EL2 cache before jumping
to the kernel. Otherwise when we drop from EL2 to EL1 kernel data that
was not cleaned from the D-cache will be lost.
Add EARLY_UART_PA/VA to ARM/ARM64 options

This options are supposed to be used as a replacement for hard-coded
values of EARLY_PRINTF UART addresses. It is assumed that UART's
PA and VA may differ.
Add support for EARLY_PRINTF to PL011 UART

Adds early_putc routine for the driver. Requires EARLY_PRINTF and
EARLY_UART_VA defined and set to a reasonable value.
Appropriate mapping VA->PA ought to be created during early init stage
as well.
Use EARLY_PRINTF in a more generic way on ARM64

From now when EARLY_PRINTF option is defined,
the PA->VA mapping is created in locore.S for a 1GB
block containing UART registers. The addresses are taken from
EARLY_UART_PA/VA options, therefore they have to be defined and
specified to a correct value.
PL011-specific early_putc routine has been removed from
machdep.c since there is a dedicated one in PL011 driver.
Temporary pass initial pagetables VA to pmap directly via variable.

This will help to drop the assumption that kernel is loaded
within 1GB of PA.
Add INVARIANTS to ARM64 DMAP_TO/TO_DMAP macros to catch out of range calls

KASSERTs will inform us when there was out of range PA or VA used
in DMAP_TO_PHYS() and PHYS_TO_DMAP().
Fix failure in ARM64 pmap_bootstrap() when kernel is not loaded within 1GB

Let the kernel direct map be as large as possible, which means
64GB 0x0 - 0xfffffffff.
This fixes all issues related to calls to DMAP for physical addresses beyond
first 64 GB.
Increase kernel addresses to DMAP_MIN_ADDRESS.
Introduce SOC_ARM_FM option for ARM64 Foundation Model

This temporary option will help to separate FM-specific hacks
in the generic code.
Make Foundation Model hack in uart_cpu_getdev() SOC_ARM_FM dependent

Avoid breaking other platforms that can acquire needed ranges from DTB.
Make efisimplefs debugs silent when not debugging
Fix typo in ARM GIC device_printf()