66 lines
1.4 KiB
ArmAsm
66 lines
1.4 KiB
ArmAsm
|
/*
|
||
|
* 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 = . ;
|
||
|
}
|