/* * ld script to make compressed SuperH/shmedia Linux kernel+decompression * bootstrap * Modified by Stuart Menefy from arch/sh/vmlinux.lds.S written by Niibe Yutaka */ #ifdef CONFIG_LITTLE_ENDIAN /* OUTPUT_FORMAT("elf32-sh64l-linux", "elf32-sh64l-linux", "elf32-sh64l-linux") */ #define NOP 0x6ff0fff0 #else /* OUTPUT_FORMAT("elf32-sh64", "elf32-sh64", "elf32-sh64") */ #define NOP 0xf0fff06f #endif OUTPUT_FORMAT("elf32-sh64-linux") OUTPUT_ARCH(sh) ENTRY(_start) #define ALIGNED_GAP(section, align) (((ADDR(section)+SIZEOF(section)+(align)-1) & ~((align)-1))-ADDR(section)) #define FOLLOWING(section, align) AT (LOADADDR(section) + ALIGNED_GAP(section,align)) SECTIONS { _text = .; /* Text and read-only data */ .text : { *(.text) *(.text64) *(.text..SHmedia32) *(.fixup) *(.gnu.warning) } = NOP . = ALIGN(4); .rodata : { *(.rodata) } /* There is no 'real' reason for eight byte alignment, four would work * as well, but gdb downloads much (*4) faster with this. */ . = ALIGN(8); .image : { *(.image) } . = ALIGN(4); _etext = .; /* End of text section */ .data : /* Data */ FOLLOWING(.image, 4) { _data = .; *(.data) } _data_image = LOADADDR(.data);/* Address of data section in ROM */ _edata = .; /* End of data section */ .stack : { stack = .; _stack = .; } . = ALIGN(4); __bss_start = .; /* BSS */ .bss : { *(.bss) } . = ALIGN(4); _end = . ; }