• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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