freebsd-dev/sys/powerpc/aim
Nathan Whitehorn 8864f35942 Execute PowerPC64/AIM kernel from direct map region when possible.
When the kernel can be in real mode in early boot, we can execute from
high addresses aliased to the kernel's physical memory. If that high
address has the first two bits set to 1 (0xc...), those addresses will
automatically become part of the direct map. This reduces page table
pressure from the kernel and it sets up the kernel to be used with
radix translation, for which it has to be up here.

This is accomplished by exploiting the fact that all PowerPC kernels are
built as position-independent executables and relocate themselves
on start. Before this patch, the kernel runs at 1:1 VA:PA, but that
VA/PA is random and set by the bootloader. Very early, it processes
its ELF relocations to operate wherever it happens to find itself.
This patch uses that mechanism to re-enter and re-relocate the kernel
a second time witha new base address set up in the early parts of
powerpc_init().

Reviewed by:	jhibbits
Differential Revision:	D14647
2018-03-13 15:03:58 +00:00
..
aim_machdep.c Execute PowerPC64/AIM kernel from direct map region when possible. 2018-03-13 15:03:58 +00:00
locore32.S Use the cookie now set by loader to determine whether the value passed to 2017-11-26 03:53:20 +00:00
locore64.S Execute PowerPC64/AIM kernel from direct map region when possible. 2018-03-13 15:03:58 +00:00
locore.S Add a kdb show command to print arbitrary SPRs on PowerPC 2016-08-13 18:46:49 +00:00
mmu_oea64.c Execute PowerPC64/AIM kernel from direct map region when possible. 2018-03-13 15:03:58 +00:00
mmu_oea64.h sys/powerpc: further adoption of SPDX licensing ID tags. 2017-11-27 15:09:59 +00:00
mmu_oea.c vm_wait() rework. 2018-02-20 10:13:13 +00:00
moea64_if.m
moea64_native.c Move the powerpc64 direct map base address from zero to high memory. This 2018-03-07 17:08:07 +00:00
mp_cpudep.c PowerNV: Put processor to power-save state in idle thread 2018-02-21 14:28:40 +00:00
slb.c Move the powerpc64 direct map base address from zero to high memory. This 2018-03-07 17:08:07 +00:00
trap_subr32.S Use the explicit expanded form of cmp. 2017-01-18 03:42:21 +00:00
trap_subr64.S Move the powerpc64 direct map base address from zero to high memory. This 2018-03-07 17:08:07 +00:00