Apply relocation This code is a wrapper around regular kernel. This checks whether the kernel is loaded at 32MB, if its not loaded at 32MB, its treated as a regular kernel and the control is given to the kernel immediately. If the kernel is loaded at 32MB, it applies relocation delta to each offset in the list which was generated and appended by patch 1 and 2. After updating all offsets, control is given to the relocatable kernel.
Signed-off-by: Mohan Kumar M <[EMAIL PROTECTED]> --- arch/powerpc/boot/vmlinux.lds.S | 28 ++++++++++++++++++++++++++++ arch/powerpc/boot/vmlinux.reloc.scr | 8 ++++++++ 2 files changed, 36 insertions(+), 0 deletions(-) create mode 100644 arch/powerpc/boot/vmlinux.lds.S create mode 100644 arch/powerpc/boot/vmlinux.reloc.scr diff --git a/arch/powerpc/boot/vmlinux.lds.S b/arch/powerpc/boot/vmlinux.lds.S new file mode 100644 index 0000000..245c667 --- /dev/null +++ b/arch/powerpc/boot/vmlinux.lds.S @@ -0,0 +1,28 @@ +#include <asm/page.h> +#include <asm-generic/vmlinux.lds.h> + +ENTRY(start_wrap) + +OUTPUT_ARCH(powerpc:common64) +SECTIONS +{ + . = KERNELBASE; + +/* + * Text, read only data and other permanent read-only sections + */ + /* Text and gots */ + .text : { + _head = .; + *(.text.head) + _ehead = .; + + _text = .; + *(.vmlinux) + _etext = .; + + _reloc = .; + *(.text.reloc) + _ereloc = .; + } +} diff --git a/arch/powerpc/boot/vmlinux.reloc.scr b/arch/powerpc/boot/vmlinux.reloc.scr new file mode 100644 index 0000000..7240b6b --- /dev/null +++ b/arch/powerpc/boot/vmlinux.reloc.scr @@ -0,0 +1,8 @@ +SECTIONS +{ + .vmlinux : { + input_len = .; + *(.data) + output_len = . - 8; + } +} -- 1.5.4 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev