This page contains some details about the FreeBSD/arm64 development process. Now that arm64 is a release architecture this information is largely kept here for historical purposes.
The basic FreeBSD/arm64 support has been available in FreeBSD-CURRENT for quite some time.
Delivery into head:
| Review | Commit | Description |
| D2005 | r280259 | kernel-toolchain |
| D2057 | r280364 | sys/ includes |
| D2132 | r281197 | libc/libstand |
| D2136 | r280903 | rtld-elf |
| D2137 | r280862 | libthr |
| D2148 | r280711 | remaining machine headers |
| D2160 | r280853 | libcompiler-rt |
| r280769 | crunchide | |
| D2173 | r281221 | libcompiler-rt multc3 |
| D2174 | r281223 | libcompiler-rt float* |
| D2175 | r280865 | LLVM vs ld/gold reloc |
| D2183 | r281014 | rtld TLS |
| D2184 | r280952 | libthread_db |
| D2185 | r280997 | stub libkvm |
| D2186 | r280951 | CDDL defines |
| D2199 | r281494 | Initial kernel merge |
| r280993 | libgcc_s infrastructure | |
| D2249 | r281493 | devmap arm/arm64 sharing |
| r281466 | psci driver | |
| r281497 | arm64 psci interface | |
| D2288 | r281526 | loader.efi for arm64 |
| D2357 | r282655 | busdma (IO coherent systems) |
| D2377 | r282867 | GICv3 |
| D2378 | r285213 | ITS |
| D2701 | r284196 | Options for dmb() and dsb() |
| D2463 | r284273 | ACPI |
| D2532 | r282909 | fabs() |
| D2555 | r283112 | PMC |
| D2386 | r284317 | ECAM PCI driver |
| D1997 | r284227 | DTrace no-modules |
| D2738 | r285009 | DTrace |
| busdma caching |
(Does not include hardware specific support and subsequent bug fixes. Does not include work from July 2015 on.)
From 18 November 2014 with a kernel filesystem:
The default boot selection will start in 3 seconds
[1] FreeBSD loader from SemiHosting
- VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/loader.efi
- LoaderType: EFI Application
-----------------------
Global FDT Config
- VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/foundation-v8.dtb
-----------------------
[a] Boot Manager
[b] Shell
[c] Reboot
[d] Shutdown
Start:
Invalid input, please choose a menu option from the list above
Start: 1
Consoles: EFI console
Image base: 0x9b189000
EFI version: 2.40
EFI Firmware: ARM Foundation Model EFI Feb 23 2014 22:56:26 (rev 0.00)
FreeBSD/arm64 EFI loader, Revision 1.0
(andrew@bender, Thu Nov 13 17:21:08 GMT 2014)
/kernel data=0x93e770+0x52008 syms=[0x8+0x981a8+0x8+0x9db5c]
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/kernel]...
EFI did not provide DTB, falling back to use /foundation.dtb
/foundation.dtb size=0xbcc
dtbfp = ffffff8000ac6490
In initarm on arm64
dtbp = ffffff8000ac6490
0 - 0
80000000 - 9b1d7000
9b1e0000 - a0000000
a0300000 - ffab8000
ffafe000 - ffb01000
ffb02000 - ffb19000
ffb1a000 - 100000000
Total = 7fcaf000
pmap_bootstrap ffffff8000004000 99000000 ac9000
ffffff8000004000
End initarm
Copyright (c) 1992-2014 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.0-CURRENT #65 af5e5a6(userland): Tue Nov 18 11:32:33 GMT 2014
andrew@bender:/usr/obj/arm64.arm64/usr/home/andrew/freebsd/repo/arm64-github/sys/GENERIC arm64
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
random device not loaded/active; using insecure pseudo-random number generator
random: entropy device infrastructure driver
random: selecting highest priority adaptor <Dummy>
random: SOFT: yarrow init()
random: selecting highest priority adaptor <Yarrow>
ofwbus0: <Open Firmware Device Tree>
gic0: <ARM Generic Interrupt Controller> mem 0x2c001000-0x2c001fff,0x2c002000-0x2c0020ff on ofwbus0
gic0: pn 0x390, arch 0x2, rev 0x0, implementer 0x43b sc->nirqs 96
generic_timer0: <ARMv8 Generic Timer> irq 29,30,27,26 on ofwbus0
Timecounter "ARM MPCore Timecounter" frequency 100000000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 100000000 Hz quality 1000
simplebus0: <Flattened device tree simple bus> on ofwbus0
simplebus1: <Flattened device tree simple bus> on simplebus0
uart0: <PrimeCell UART (PL011)> mem 0x90000-0x90fff irq 37 on simplebus1
uart0: console (115200,n,8,1)
uart1: <PrimeCell UART (PL011)> mem 0xa0000-0xa0fff irq 38 on simplebus1
uart2: <PrimeCell UART (PL011)> mem 0xb0000-0xb0fff irq 39 on simplebus1
uart3: <PrimeCell UART (PL011)> mem 0xc0000-0xc0fff irq 40 on simplebus1
Timecounters tick every 1.000 msec
random: unblocking device.
Trying to mount root from ufs:/dev/md0 []...
Mounting from ufs:/dev/md0 failed with error 2.
Trying to mount root from ufs:md0 []...
warning: no time-of-day clock registered, system time will not be set accurately
Enter full pathname of shell or RETURN for /bin/sh:
Cannot read termcap database;
using dumb terminal settings.
# echo *
bin dev sbin
# ls
bin dev sbin