Merge branch 'master' of github.com:thepowersgang/acess2
[tpg/acess2.git] / KernelLand / Kernel / arch / armv7 / link.ld
1 ENTRY (_start)
2
3 _kernel_base = 0x80000000;
4 _usertext_vbase = 0xFFFFE000;
5
6 SECTIONS
7 {
8         . = 0;
9         .init :
10         {
11                 *(.init)
12         }
13         . += _kernel_base;
14         .text : AT( ADDR(.text) - _kernel_base )
15         {
16                 *(.text*)
17                 *(.rodata*)
18         }
19                         
20
21         /* HACKS: User accesible .text section */
22         . = ALIGN(0x1000);
23         gUsertextPhysStart = . - _kernel_base;
24         . = _usertext_vbase;
25         .usertext : AT( gUsertextPhysStart )
26         {
27                 *(.usertext)
28         }
29         . += gUsertextPhysStart + _kernel_base - _usertext_vbase;
30
31         /DISCARD/           : { *(.ARM.extab.init .ARM.exidx.init)      }
32         .ARM.extab          : AT( ADDR(.ARM.extab) - _kernel_base)
33         {
34                 *(.ARM.extab* .gnu.linkonce.armextab.*)
35         }
36         PROVIDE_HIDDEN ( __exidx_start = . );
37         .ARM.exidx          : AT( ADDR(.ARM.exidx) - _kernel_base)
38         {
39                 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
40         }
41         PROVIDE_HIDDEN ( __exidx_end = . );
42         .eh_frame_hdr       : AT( ADDR(.eh_frame_hdr) - _kernel_base) {
43                 *(.eh_frame_hdr)
44         }
45         .eh_frame           : AT( ADDR(.eh_frame) - _kernel_base) ONLY_IF_RO
46         {
47                 KEEP (*(.eh_frame))
48         }
49         .gcc_except_table   : AT( ADDR(.gcc_except_table) - _kernel_base) ONLY_IF_RO
50         {
51                 *(.gcc_except_table .gcc_except_table.*)
52         }
53
54         /* 0x4000 (4 pages) alignment needed for root table */
55         . = ALIGN(0x4000);
56         .data : AT( ADDR(.data) - _kernel_base )
57         {
58                 *(.padata)
59                 *(.data*)
60                 
61                 gKernelSymbols = .;
62                 *(KEXPORT)
63                 gKernelSymbolsEnd = .;
64                 
65                 gKernelModules = .;
66                 *(KMODULES)
67                 gKernelModulesEnd = .;
68         }
69         .bss ALIGN(0x1000) : AT( ADDR(.bss) - _kernel_base )
70         {
71                 bss_start = .;
72                 *(.bss*)
73                 *(COMMON*)
74                 . = ALIGN(0x1000);
75                 *(.pabss)
76                 bss_end = .;
77         }
78         gKernelEnd = .;
79 }

UCC git Repository :: git.ucc.asn.au