HardenedBSD/sys/powerpc/conf/QORIQ64
Justin Hibbits e683c328f8 Introduce 64-bit PowerPC Book-E support
Extend the Book-E pmap to support 64-bit operation.  Much of this was taken from
Juniper's Junos FreeBSD port.  It uses a 3-level page table (page directory
list -- PP2D, page directory, page table), but has gaps in the page directory
list where regions will repeat, due to the design of the PP2D hash (a 20-bit gap
between the two parts of the index).  In practice this may not be a problem
given the expanded address space.  However, an alternative to this would be to
use a 4-level page table, like Linux, and possibly reduce the available address
space; Linux appears to use a 46-bit address space.  Alternatively, a cache of
page directory pointers could be used to keep the overall design as-is, but
remove the gaps in the address space.

This includes a new kernel config for 64-bit QorIQ SoCs, based on MPC85XX, with
the following notes:
* The DPAA driver has not yet been ported to 64-bit so is not included in the
  kernel config.
* This has been tested on the AmigaOne X5000, using a MD_ROOT compiled in
  (total size kernel+mdroot must be under 64MB).
* This can run both 32-bit and 64-bit processes, and has even been tested to run
  a 32-bit init with 64-bit children.

Many thanks to stevek and marcel for getting Juniper's FreeBSD patches open
sourced to be used here, and to stevek for reviewing, and providing some
historical contexts on quirks of the code.

Reviewed by:	stevek
Obtained from:	Juniper (in part)
MFC after:	2 months
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D9433
2017-03-17 21:40:14 +00:00

104 lines
1.8 KiB
Plaintext

#
# Custom kernel for Freescale QorIQ (P5xxx, Txxxx) based boards, like
# AmigaOne X5000
#
# $FreeBSD$
#
cpu BOOKE
cpu BOOKE_E500
ident MPC85XX
machine powerpc powerpc64
makeoptions DEBUG="-Wa,-me500 -g"
makeoptions WERROR="-Werror -Wno-format -Wno-redundant-decls"
makeoptions NO_MODULES=yes
#options EARLY_PRINTF
options FPU_EMU
options BOOTVERBOSE=1
options _KPOSIX_PRIORITY_SCHEDULING
options ALT_BREAK_TO_DEBUGGER
options BREAK_TO_DEBUGGER
options BOOTP
options BOOTP_NFSROOT
#options BOOTP_NFSV3
options CD9660
#options COMPAT_43
options COMPAT_FREEBSD32 #Compatible with FreeBSD/powerpc binaries
options DDB
#options DEADLKRES
options DEVICE_POLLING
#options DIAGNOSTIC
options FDT
#makeoptions FDT_DTS_FILE=mpc8555cds.dts
options FFS
options GDB
options GEOM_PART_GPT
options INET
options INET6
options TCP_HHOOK # hhook(9) framework for TCP
options INVARIANTS
options INVARIANT_SUPPORT
options KDB
options KTRACE
options MD_ROOT
options MPC85XX
options MSDOSFS
options NFS_ROOT
options NFSCL
options NFSLOCKD
options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.
options PROCFS
options PSEUDOFS
options SCHED_ULE
options CAPABILITIES
options CAPABILITY_MODE
options SMP
options SYSVMSG
options SYSVSEM
options SYSVSHM
options WITNESS
options WITNESS_SKIPSPIN
device ata
device bpf
device cfi
device crypto
device cryptodev
device da
device ds1553
device em
device alc
device ether
device fxp
device gpio
device gpiopower
device iic
device iicbus
#device isa
device loop
device md
device miibus
device mmc
device mmcsd
device pass
device pci
device random
#device rl
device scbus
device scc
device sdhci
device sec
device tun
device uart
options USB_DEBUG # enable debug msgs
#device uhci
device ehci
device umass
device usb
device vlan