1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * 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
- */
- #include <linux/config.h>
- #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 = . ;
- }
|