1/* 2 * ld script to make compressed SuperH/shmedia Linux kernel+decompression 3 * bootstrap 4 * Modified by Stuart Menefy from arch/sh/vmlinux.lds.S written by Niibe Yutaka 5 */ 6 7 8#ifdef CONFIG_LITTLE_ENDIAN 9/* OUTPUT_FORMAT("elf32-sh64l-linux", "elf32-sh64l-linux", "elf32-sh64l-linux") */ 10#define NOP 0x6ff0fff0 11#else 12/* OUTPUT_FORMAT("elf32-sh64", "elf32-sh64", "elf32-sh64") */ 13#define NOP 0xf0fff06f 14#endif 15 16OUTPUT_FORMAT("elf32-sh64-linux") 17OUTPUT_ARCH(sh) 18ENTRY(_start) 19 20#define ALIGNED_GAP(section, align) (((ADDR(section)+SIZEOF(section)+(align)-1) & ~((align)-1))-ADDR(section)) 21#define FOLLOWING(section, align) AT (LOADADDR(section) + ALIGNED_GAP(section,align)) 22 23SECTIONS 24{ 25 _text = .; /* Text and read-only data */ 26 27 .text : { 28 *(.text) 29 *(.text64) 30 *(.text..SHmedia32) 31 *(.fixup) 32 *(.gnu.warning) 33 } = NOP 34 . = ALIGN(4); 35 .rodata : { *(.rodata) } 36 37 /* There is no 'real' reason for eight byte alignment, four would work 38 * as well, but gdb downloads much (*4) faster with this. 39 */ 40 . = ALIGN(8); 41 .image : { *(.image) } 42 . = ALIGN(4); 43 _etext = .; /* End of text section */ 44 45 .data : /* Data */ 46 FOLLOWING(.image, 4) 47 { 48 _data = .; 49 *(.data) 50 } 51 _data_image = LOADADDR(.data);/* Address of data section in ROM */ 52 53 _edata = .; /* End of data section */ 54 55 .stack : { stack = .; _stack = .; } 56 57 . = ALIGN(4); 58 __bss_start = .; /* BSS */ 59 .bss : { 60 *(.bss) 61 } 62 . = ALIGN(4); 63 _end = . ; 64} 65