Bugfixing the x86_64 port
[tpg/acess2.git] / Kernel / arch / x86_64 / link.ld
1 /*
2  * Acess2 x86_64 Kernel
3  * Linker Script
4  */
5
6 /* _kernel_base = 0xFFFF800000000000; */
7 /* -2 GiB */
8 _kernel_base = 0xFFFFFFFF80000000;
9
10 OUTPUT_FORMAT(elf32-i386)
11 OUTPUT_ARCH(i386:x86-64)
12 ENTRY (start)
13
14 SECTIONS {
15         . = 0x100000;
16         gKernelBase = .;
17         . += SIZEOF_HEADERS;
18         __load_addr = .;
19         .multiboot : AT(ADDR(.multiboot)) {
20                 *(.multiboot)
21         }
22         
23         . += _kernel_base;
24         
25         .text ALIGN(0x1000): AT(ADDR(.text) - _kernel_base) {
26                 *(.text)
27         }
28         
29         .usertext ALIGN(0x1000): AT(ADDR(.usertext) - _kernel_base) {
30                 _UsertextBase = .;
31                 *(.usertext)
32         }
33         _UsertextEnd = .;
34         
35         .rodata ALIGN(0x1000): AT(ADDR(.rodata) - _kernel_base) {
36                 *(.initpd)
37                 *(.rodata)
38                 *(.rodata.*)
39                 *(.rdata)
40                 
41                 . = ALIGN(0x10);
42                 gKernelModules = .;
43                 *(KMODULES)
44                 gKernelModulesEnd = .;
45                 . = ALIGN(0x10);
46                 gKernelSymbols = .;
47                 *(KEXPORT)
48                 gKernelSymbolsEnd = .;
49         }
50         
51         .padata ALIGN (0x1000) : AT(ADDR(.padata) - _kernel_base) {
52                 *(.padata)
53         }
54         
55         .data ALIGN (0x1000) : AT(ADDR(.data) - _kernel_base) {
56                 *(.data)
57         }
58
59         __bss_start = .;
60         .bss : AT(ADDR(.bss) - _kernel_base) {
61                 _sbss = .;
62                 *(COMMON)
63                 *(.bss)
64                 _ebss = .;
65         }
66         gKernelEnd = (. + 0xFFF)&0xFFFFFFFFFFFFF000;
67 }

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