Merge branch 'for-2.6.30' of git://linux-nfs.org/~bfields/linux
[linux-2.6] / arch / sh / boot / compressed / vmlinux_64.lds
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
16 OUTPUT_FORMAT("elf32-sh64-linux")
17 OUTPUT_ARCH(sh)
18 ENTRY(_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
23 SECTIONS
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 }