The implementation for Freescale BookE64 is similar as BookE32. Onedifference is that Freescale BookE64 set up a TLB mapping of 1G duringbooting. Another difference is that ppc64 needs the kernel to be64K-aligned. So we can randomize the kernel in this 1G mapping and makeit 64K-aligned. This can save some code to creat another TLB map atearly boot. The disadvantage is that we only have about 1G/64K = 16384slots to put the kernel in.

I'm not sure if the slot numbers is enough or the design has anydefects. If you have some better ideas, I would be happy to hear that.

Thank you all.

v3->v4: Do not define __kaslr_offset as a fixed symbol. Reference __run_at_load and __kaslr_offset by symbol instead of magic offsets. Use IS_ENABLED(CONFIG_PPC32) instead of #ifdef CONFIG_PPC32. Change kaslr-booke32 to kaslr-booke in index.rst Switch some instructions to 64-bit.v2->v3: Fix build error when KASLR is disabled.v1->v2: Add __kaslr_offset for the secondary cpu boot up.

Jason Yan (6): powerpc/fsl_booke/kaslr: refactor kaslr_legal_offset() and kaslr_early_init() powerpc/fsl_booke/64: introduce reloc_kernel_entry() helper powerpc/fsl_booke/64: implement KASLR for fsl_booke64 powerpc/fsl_booke/64: do not clear the BSS for the second pass powerpc/fsl_booke/64: clear the original kernel if randomized powerpc/fsl_booke/kaslr: rename kaslr-booke32.rst to kaslr-booke.rst and add 64bit part