[XTENSA] Use preprocessor to generate the linker script for the ELF boot image
authorChris Zankel <chris@zankel.net>
Tue, 12 Feb 2008 21:14:17 +0000 (13:14 -0800)
committerChris Zankel <chris@zankel.net>
Thu, 14 Feb 2008 01:26:17 +0000 (17:26 -0800)
Signed-off-by: Marc Gauthier <marc@tensilica.com>
Signed-off-by: Chris Zankel <chris@zankel.net>
arch/xtensa/boot/boot-elf/Makefile
arch/xtensa/boot/boot-elf/boot.ld [deleted file]
arch/xtensa/boot/boot-elf/boot.lds.S [new file with mode: 0644]

index 734db7f76583ad3c24b38699bc39503df166ec8e..9cf50ef465c16b0631e0b3b6e37f5e54d38a2793 100644 (file)
@@ -14,12 +14,13 @@ OBJCOPY_ARGS    := -O elf32-xtensa-le
 endif
 
 export OBJCOPY_ARGS
+export CPPFLAGS_boot.lds += -P -C
 
 boot-y         := bootstrap.o
 
 OBJS           := $(addprefix $(obj)/,$(boot-y))
 
-Image: vmlinux $(OBJS)
+Image: vmlinux $(OBJS) arch/$(ARCH)/boot/boot-elf/boot.lds
        $(OBJCOPY) --strip-all -R .comment -R .xt.insn -O binary \
                vmlinux vmlinux.tmp
        $(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \
@@ -27,7 +28,7 @@ Image:        vmlinux $(OBJS)
                --set-section-flags image=contents,alloc,load,load,data \
                $(OBJS) $@.tmp
        $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) \
-               -T $(srctree)/arch/$(ARCH)/boot/boot-elf/boot.ld \
+               -T arch/$(ARCH)/boot/boot-elf/boot.lds \
                -o arch/$(ARCH)/boot/$@.elf $@.tmp
        rm -f $@.tmp vmlinux.tmp
 
diff --git a/arch/xtensa/boot/boot-elf/boot.ld b/arch/xtensa/boot/boot-elf/boot.ld
deleted file mode 100644 (file)
index e33855c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-OUTPUT_ARCH(xtensa)
-ENTRY(_ResetVector)
-
-SECTIONS
-{
-       .start 0xD0000000 : { *(.start) }
-
-       .text 0xD0000000:
-       {
-               __reloc_start = . ;
-               _text_start = . ;
-               *(.literal .text.literal .text)
-               _text_end = . ;
-       }
-
-       .rodata ALIGN(0x04):
-       {
-               *(.rodata)
-               *(.rodata1)
-       }
-
-       .data ALIGN(0x04):
-       {
-               *(.data)
-               *(.data1)
-               *(.sdata)
-               *(.sdata2)
-               *(.got.plt)
-               *(.got)
-               *(.dynamic)
-       }
-
-       __reloc_end = . ;
-
-       .initrd ALIGN(0x10) :
-       {
-               boot_initrd_start = . ;
-               *(.initrd)
-               boot_initrd_end = .;
-       }
-
-       . = ALIGN(0x10);
-       __image_load = . ;
-       .image 0xd0001000:
-       {
-               _image_start = .;
-               *(image)
-               . = (. + 3) & ~ 3;
-               _image_end = .  ;
-       }
-
-
-       .bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3):
-       {
-               __bss_start = .;
-               *(.sbss)
-               *(.scommon)
-               *(.dynbss)
-               *(.bss)
-               __bss_end = .;
-       }
-       _end = .;
-       _param_start = .;
-
-       .ResetVector.text 0xfe000020 :
-       {
-               *(.ResetVector.text)
-       }
-
-
-       PROVIDE (end = .);
-}
diff --git a/arch/xtensa/boot/boot-elf/boot.lds.S b/arch/xtensa/boot/boot-elf/boot.lds.S
new file mode 100644 (file)
index 0000000..849dfca
--- /dev/null
@@ -0,0 +1,73 @@
+#include <asm/variant/core.h>
+OUTPUT_ARCH(xtensa)
+ENTRY(_ResetVector)
+
+SECTIONS
+{
+       .start 0xD0000000 : { *(.start) }
+
+       .text 0xD0000000:
+       {
+               __reloc_start = . ;
+               _text_start = . ;
+               *(.literal .text.literal .text)
+               _text_end = . ;
+       }
+
+       .rodata ALIGN(0x04):
+       {
+               *(.rodata)
+               *(.rodata1)
+       }
+
+       .data ALIGN(0x04):
+       {
+               *(.data)
+               *(.data1)
+               *(.sdata)
+               *(.sdata2)
+               *(.got.plt)
+               *(.got)
+               *(.dynamic)
+       }
+
+       __reloc_end = . ;
+
+       .initrd ALIGN(0x10) :
+       {
+               boot_initrd_start = . ;
+               *(.initrd)
+               boot_initrd_end = .;
+       }
+
+       . = ALIGN(0x10);
+       __image_load = . ;
+       .image 0xd0001000:
+       {
+               _image_start = .;
+               *(image)
+               . = (. + 3) & ~ 3;
+               _image_end = .  ;
+       }
+
+
+       .bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3):
+       {
+               __bss_start = .;
+               *(.sbss)
+               *(.scommon)
+               *(.dynbss)
+               *(.bss)
+               __bss_end = .;
+       }
+       _end = .;
+       _param_start = .;
+
+       .ResetVector.text XCHAL_RESET_VECTOR_VADDR :
+       {
+               *(.ResetVector.text)
+       }
+
+
+       PROVIDE (end = .);
+}
This page took 0.03088 seconds and 5 git commands to generate.