e683c328f8
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
104 lines
1.8 KiB
Plaintext
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
|