OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [or32/] [kernel/] [vmlinux.lds.S] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 xianfeng
/* ld script to make Linux/or32 kernel
2
 * Authors: Matjaz Breskvar 
3
 *
4
 */
5
 
6
/* __PHX__ :: TODO
7
 *              - clean up __offset & stuff
8
 *              - change all 8192 aligment to PAGE !!!
9
 *              - recheck if all aligments are really needed
10
 *              - make ramsize an option (maybe config option) or suck it of
11
 * hardware and calculate dram_end acordingly
12
 */
13
 
14
 
15
#ifdef CONFIG_OR32_FLASH_BOOT
16
#  define LOAD_OFFSET -0x30000000
17
#  define LOAD_BASE    0xc0000000
18
#else
19
#  define LOAD_OFFSET  0xc0000000
20
#  define LOAD_BASE    0xc0000000
21
#endif
22
 
23
#include 
24
 
25
 
26
OUTPUT_FORMAT("elf32-or32", "elf32-or32", "elf32-or32")
27
OUTPUT_ARCH(or32)
28
_jiffies = _jiffies_64 + 4;
29
SECTIONS
30
{
31
        /* Read-only sections, merged into text segment: */
32
        . = LOAD_BASE ;
33
        _dram_start = .;
34
 
35
        __s_protected_core = .;
36
 
37
        __stext = .;
38
        .text                   : AT(ADDR(.text) - LOAD_OFFSET)
39
        {
40
          *(.text)
41
          SCHED_TEXT
42
          LOCK_TEXT
43
          *(.fixup)
44
          *(.text.__*)
45
        }
46
        __etext = .;
47
 
48
        RODATA
49
 
50
        __e_protected_core = .;
51
 
52
        . = ALIGN(4);
53
        __ex_table              : AT(ADDR(__ex_table) - LOAD_OFFSET)
54
        {
55
                ___start___ex_table = .;
56
                *(__ex_table)
57
                ___stop___ex_table = .;
58
        }
59
 
60
        . = ALIGN(4);
61
        .data                   : AT(ADDR(.data) - LOAD_OFFSET)
62
        {
63
          *(.data)
64
        }
65
 
66
        . = ALIGN(32);
67
        .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
68
        {
69
                *(.data.cacheline_aligned)
70
        }
71
 
72
        __edata  =  .;
73
 
74
       /* init_task and stack, must be aligned */
75
        . = ALIGN(8192);
76
        .data.init_task         : AT(ADDR(.data.init_task) - LOAD_OFFSET)
77
        {
78
          *(.data.init_task)
79
        }
80
 
81
        /* Init code and data */
82
        . = ALIGN(8192);
83
        ___init_begin = .;
84
        .init.text              : AT(ADDR(.init.text) - LOAD_OFFSET)
85
        {
86
                __sinittext = .;
87
                *(.init.text)
88
                __einittext = .;
89
        }
90
 
91
        .init.data              : AT(ADDR(.init.data) - LOAD_OFFSET)
92
        {
93
                *(.init.data)
94
        }
95
 
96
        /* Setup calls */
97
        . = ALIGN(16);
98
        ___setup_start = .;
99
        .init.setup             : AT(ADDR(.init.setup) - LOAD_OFFSET)
100
        {
101
                *(.init.setup)
102
        }
103
        ___setup_end = .;
104
 
105
 
106
        ___start___param = .;
107
        __param                 : AT(ADDR(__param) - LOAD_OFFSET)
108
        {
109
                *(__param)
110
        }
111
        ___stop___param = .;
112
 
113
 
114
 
115
        .initcall.init          : AT(ADDR(.initcall.init) - LOAD_OFFSET)
116
        {
117
                ___initcall_start = .;
118
                INITCALLS
119
                ___initcall_end = .;
120
        }
121
 
122
        .con_initcall.init      : AT(ADDR(.con_initcall.init) - LOAD_OFFSET)
123
        {
124
                ___con_initcall_start = .;
125
                *(.con_initcall.init)
126
                ___con_initcall_end = .;
127
        }
128
 
129
        SECURITY_INIT
130
 
131
 
132
        . = ALIGN(8192);
133
        .init.ramfs             : AT(ADDR(.init.ramfs) - LOAD_OFFSET)
134
        {
135
                ___initramfs_start = .;
136
                *(.init.ramfs)
137
                ___initramfs_end = .;
138
                /* We fill to the next page, so we can discard all init
139
                   pages without needing to consider what payload might be
140
                   appended to the kernel image.  */
141
                FILL (0);
142
                . = ALIGN (8192);
143
        }
144
        ___init_end = .;
145
 
146
        . = ALIGN(8192);
147
        .initrd                 : AT(ADDR(.initrd) - LOAD_OFFSET)
148
        {
149
                ___initrd_start = .;
150
                *(.initrd)
151
                FILL (0);
152
                . = ALIGN (8192);
153
                ___initrd_end = .;
154
        }
155
 
156
        ___vmlinux_end = .;            /* last address of the physical file */
157
/*        ___init_end = .;
158
*/
159
        ___data_end = . ;              /* Move to _edata ? */
160
        ___bss_start = .;              /* BSS */
161
        .bss                    : AT(ADDR(.bss) - LOAD_OFFSET)
162
        {
163
                *(COMMON)
164
                *(.bss)
165
        }
166
 
167
        . =  ALIGN (0x20);
168
        __end = .;
169
 
170
        /* Sections to be discarded */
171
        /DISCARD/ :
172
        {
173
                *(.exit.text)
174
                *(.text.exit)
175
                *(.data.exit)
176
                *(.exitcall.exit)
177
        }
178
 
179
        /* we need to add an extra underscore */
180
        PROVIDE(___start___ksymtab      = __start___ksymtab);
181
        PROVIDE(___stop___ksymtab       = __stop___ksymtab);
182
        PROVIDE(___start___ksymtab_gpl  = __start___ksymtab_gpl);
183
        PROVIDE(___stop___ksymtab_gpl   = __stop___ksymtab_gpl);
184
        PROVIDE(___sched_text_start     = __sched_text_start);
185
        PROVIDE(___sched_text_end       = __sched_text_end);
186
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.