original comment: +Wilson03172004,marked due to this pci host does not support MWI
[linux-2.4.git] / arch / cris / cris.ld
1 /* ld script to make the Linux/CRIS kernel
2  * Authors: Bjorn Wesen (bjornw@axis.com)
3  *
4  * It is VERY DANGEROUS to fiddle around with the symbols in this
5  * script. It is for example quite vital that all generated sections
6  * that are used are actually named here, otherwise the linker will
7  * put them at the end, where the init stuff is which is FREED after
8  * the kernel has booted. 
9  */     
10
11 SECTIONS
12 {
13         . = @CONFIG_ETRAX_DRAM_VIRTUAL_BASE@;
14         dram_start = .;
15         ibr_start = .;
16         . = . + 0x4000; /* see head.S and pages reserved at the start */
17
18         _text = .;                    /* Text and read-only data */
19         text_start = .;              /* lots of aliases */
20         _stext = .;
21         __stext = .;
22         .text : {
23                 *(.text)
24                 *(.fixup)
25                 *(.text.__*)
26         }
27         .text.lock : { *(.text.lock) }        /* out-of-line lock text */
28
29         _etext = . ;                  /* End of text section */ 
30         __etext = .;
31
32         .rodata : { *(.rodata) *(.rodata.__*) }
33         .kstrtab : { *(.kstrtab) }
34
35         . = ALIGN(4);                /* Exception table */
36         __start___ex_table = .;
37         __ex_table : { *(__ex_table) }
38         __stop___ex_table = .;
39
40         __start___ksymtab = .;        /* Kernel symbol table */
41         __ksymtab : { *(__ksymtab) }
42         __stop___ksymtab = .;
43
44         . = ALIGN (4);
45         ___data_start = . ;
46         __Sdata = . ;
47         .data : {                     /* Data */
48                 *(.data)
49         }
50         __edata = . ;                 /* End of data section */
51         _edata = . ;
52
53         . = ALIGN(8192);              /* init_task and stack, must be aligned */
54         .data.init_task : { *(.data.init_task) }
55
56         . = ALIGN(8192);              /* Init code and data */
57         __init_begin = .;
58         .text.init : { *(.text.init) }
59         .data.init : { *(.data.init) }
60         . = ALIGN(16);
61         __setup_start = .;
62         .setup.init : { *(.setup.init) }
63         __setup_end = .;
64         .initcall.init : {
65                 __initcall_start = .;
66                 *(.initcall.init);
67                 __initcall_end = .;
68
69                 /* We fill to the next page, so we can discard all init
70                    pages without needing to consider what payload might be
71                    appended to the kernel image.  */
72                 FILL (0);
73                 . = ALIGN (8192);
74         }
75         __vmlinux_end = .;            /* last address of the physical file */
76         __init_end = .;
77
78         __data_end = . ;              /* Move to _edata ? */
79         __bss_start = .;              /* BSS */
80         .bss : {
81                 *(COMMON)
82                 *(.bss)
83         }
84
85         . =  ALIGN (0x20);
86         _end = .;
87         __end = .;
88
89         /* Sections to be discarded */
90         /DISCARD/ : {
91                 *(.text.exit)
92                 *(.data.exit)
93                 *(.exitcall.exit)
94         }
95
96         dram_end = dram_start + @CONFIG_ETRAX_DRAM_SIZE_M@*1024*1024;
97 }