make irq specifier to be provided when assigining irq
[lunaix-os.git] / lunaix-os / link / lunaix.ldx
1 #define __LD__
2 #include "base.ldx"
3
4 ENTRY(ENTRY_POINT)
5
6 PHDRS
7 {
8     boot_text       PT_LOAD;
9     boot_data       PT_LOAD;
10
11     text            PT_LOAD;
12     data            PT_LOAD;
13     rodata          PT_LOAD     FLAGS(4);
14
15     var             PT_LOAD;
16 }
17
18 SECTIONS {
19     . = LOAD_OFF;
20
21     __kload_start = ALIGN(PAGE_GRAN);
22
23
24     /* ---- boot start ---- */
25     __kboot_start = .;
26
27     #include <linking/boot_secs.ldx>
28
29     __kboot_end = ALIGN(PAGE_GRAN);
30
31
32     /* ---- kernel start ---- */
33
34     . += KEXEC_BASE;
35     
36     PROVIDE(__kexec_text_start = ALIGN(PAGE_GRAN));    
37     __kexec_start = ALIGN(PAGE_GRAN);
38
39     /* kernel executable sections */
40
41     #include "kernel.ldx"
42
43     /* link-time allocated array */
44
45     #include "lga.ldx"
46
47     /* 
48         All the auto-generated stuff and uninitialized data
49         must be a member of `var` segment 
50     */
51
52     .autogen BLOCK(PAGE_GRAN) 
53         : AT ( ADDR(.autogen) - KEXEC_BASE )
54     {
55         KEEP(*(.autogen.*))
56     } : var
57
58     /* 
59         End of loadable regions.
60         This fake section is used to correct address 
61          calculation
62     */
63     
64     .__load_end : {
65         __kload_end = ALIGN(PAGE_GRAN) - KEXEC_BASE;
66     } : var
67
68
69     .kpg BLOCK(PAGE_GRAN) 
70         : AT ( ADDR(.kpg) - KEXEC_BASE )
71     {
72         KEEP(*(.kpg))
73     } : var
74
75     .bss BLOCK(PAGE_GRAN) 
76         : AT ( ADDR(.bss) - KEXEC_BASE ) 
77     {
78         *(.bss)
79
80         /* static kernel stack  */
81         . = ALIGN(PAGE_GRAN);
82         PROVIDE(__bsskstack_start = .);
83         *(.bss.kstack)
84         PROVIDE(__bsskstack_end = .);
85
86         /* reclaimable data  */
87         . = ALIGN(PAGE_GRAN);
88         PROVIDE(__bssreclaim_start = .);
89         *(.bss.reclaim)
90         PROVIDE(__bssreclaim_end = .);
91     } : var
92
93     .__end_of_lunaix : 
94     {
95         __kbss_end  = ALIGN(PAGE_GRAN) - KEXEC_BASE;
96         __kexec_end = ALIGN(PAGE_GRAN);
97
98 #ifdef CONFIG_USE_DEVICETREE
99         __dtb_start = ALIGN(PAGE_GRAN);
100         . = __dtb_start + CONFIG_DTB_MAXSIZE;
101 #endif
102
103         __kimg_end = ALIGN(PAGE_GRAN);
104     } : var
105 }