8864f35942
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 |
||
---|---|---|
.. | ||
aim_machdep.c | ||
locore32.S | ||
locore64.S | ||
locore.S | ||
mmu_oea64.c | ||
mmu_oea64.h | ||
mmu_oea.c | ||
moea64_if.m | ||
moea64_native.c | ||
mp_cpudep.c | ||
slb.c | ||
trap_subr32.S | ||
trap_subr64.S |